Hab ich dass so richtig erklärt (Objekte und Referenzen)?

Käsekuchen

Mitglied
Java:
public class Klasse {
    
    public static Schüler xxx (Schüler q) {
        q.alter = q.alter+5;
        return q;
    }
    
    public static void main(String[]args) {
        Schüler eins = new Schüler("Max",18);
        
        Schüler zwei = xxx(new Schüler("Hans",20));
        
        
    }

}
Ich hätte mal eine Frage zum Verständnis, ich weiss dass das Programm keinen Sinn macht, aber ich hab es einfach mal für diese Erklärung geschrieben.

In der Zeile 13 hab ich die Variable "zwei" vom Typ "Schüler", ich ruf dann die Methode "xxx" auf
und übergeb dann an die Methode "xxx" ein neues Schüler Objekt, in der Methode "xxx" verweist dann "q" auf das Objekt(welches ich übergeben hab), und deshalb kann ich mit "q."auf das Attribut "alter" von dem Objekt zugreifen. in der Zeile 7 return ich dann die Referenz/Verweis auf das Objekt(nicht das Objekt selbst)
die Variable "zwei" verweist dann ebenfalls auf dieses Objekt, und so kann ich mit "zwei." z.B den Namen ändern.
Stimmt diese Erklärung oder hab ich irgendwas falsch verstanden ?
 

Neumi5694

Top Contributor
Im normalen Sprachgebrauch - vor allem wenn es um Kommunikation und Datentransfer geht - ist fast immer die Referenz gemeint, wenn vom Objekt gesprochen wird.
Das "Objekt selbst" wird nämlich niemals irgendwo übergeben (lassen wir mal Datenübertragung per Serialisierung usw. außen vor).
Wenn du sagst: "Die Methode liefert einen String", dann ist das falsch. Der String wird irgendwo im Speicher erstellt, die Methode liefert die Referenz darauf. Trotzdem wirst du niemanden finden, der freiwillig "Die Methode liefert die Referenz auf einen String" sagt.
Ebenso speichert ein Array von Strings gar keine Strings. Diese liegen irgendwo im Speicher, im Array sind lediglich die Adressen davon hinterlegt.

In Java übergibst und lieferst du grundsätzlich immer Werte. Diese können simple Zahlen (oder andere primitive Datentypen) sein, oder eben die Referenz, also der Adressbereich, in dem ein Objekt gespeichert ist.
 

Marinek

Bekanntes Mitglied
Man muss dabei bedenken, dass Java das Prinzip “Call by Value” implementiert. Es werden also immer Kopien der Werte übergeben. Auch so eine Referenz ist in Java ein Wert, dessen Kopie an eine Methode übergeben wird.

Von der Erklärung könnte man daraus schließen, dass Java Call by Reference umsetzt. Ist es aber nicht. Das hat einige Implikationen, die man sich anschauen könnte.
 

Robert Zenz

Top Contributor
Man muss dabei bedenken, dass Java das Prinzip “Call by Value” implementiert. Es werden also immer Kopien der Werte übergeben. Auch so eine Referenz ist in Java ein Wert, dessen Kopie an eine Methode übergeben wird.

Von der Erklärung könnte man daraus schließen, dass Java Call by Reference umsetzt. Ist es aber nicht. Das hat einige Implikationen, die man sich anschauen könnte.

Das ist fuer Anfaenger komplett irrelevant und verwirrt nur. Klar ist es technisch gesehen richtig dass Java Call by Value mit Pointern macht, aber fuer einen Anfaenger ist es komplett irrelevant (nicht zuletzt deswegen weil es ein Implementierungsdetail der JVM ist...glaube ich, Konrad darf mir da gerne wieder die JLS vorhalten) wenn man erklaert wie der Ablauf der Programmlogik ist. Das einzige wichtige Verhalten auf Hoehe von Java selbst ist das Objekte immer als Referenz auf diese Objekte selbst uebergeben werden und du immer nur ein Objekt hast egal wie oft (und an wen oder was) du es uebergibst. Von dem her ist die Erklaerung richtig.
 

KonradN

Super-Moderator
Mitarbeiter
Ich halte dieses Call by Value auch für Anfänger für sehr wichtig. Ob man die Begriffe nun kennt oder nicht ist egal. Aber wichtig ist halt das Verständnis, dass da nur ein Wert kopiert wird. Aber Du hast Recht, dass es im Kontext dieses Threads auch in meinen Augen eher irrelevant ist (Und darauf beziehst Du Dich und daher bin ich da voll und ganz bei Dir Robert!)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Main Methode scheint Constructor aufzurufen, ohne dass es so gecoded ist Java Basics - Anfänger-Themen 2
berserkerdq2 Intelij, wie kann ich einstellen, dass die aktuelle Klasse ausgeführt wird, wenn ich aufs Startsymbol drücke, gibts da eine Tastenkombination? Java Basics - Anfänger-Themen 11
A Methoden Guten Tag , ich wollte so machen dass wenn meine frog an eine fly/bee geht dann an meine Tafel geht der zahl +1 hoch. Java Basics - Anfänger-Themen 2
B Überprüfung dass Zahl nur aus 0,1 besteht Java Basics - Anfänger-Themen 2
S mehrere TreeSets so speichern, dass man sie miteinander vergleichen kann Java Basics - Anfänger-Themen 1
berserkerdq2 Habe ein Spiel entwickelt, dass immer in der 4 Runde einen cast-Fehler erhält Java Basics - Anfänger-Themen 3
berserkerdq2 Wo ist der SInn, dass man den Stream, den ich zum Schreiben nutze, outputstream nenne? Java Basics - Anfänger-Themen 5
U Methode wird genutzt, ohne dass ich die aufrufe? Java Basics - Anfänger-Themen 4
berserkerdq2 Wie würde man einen regulären Ausdruck in Java schreiben, der prüft, dass zwei bestimtme Zahlen nicht nebeneinadner sind? Java Basics - Anfänger-Themen 3
K Präzedenregeln in Java sagen, dass +expr und -expr vor + von Addition und - von Addition stehen, warum wird dann z. B. a+b als eine Addition ausgeführ Java Basics - Anfänger-Themen 7
M Wie schreibe ich eine if-Verzweigung um, so dass ein Bedingungsoperator benutzt wird? Java Basics - Anfänger-Themen 9
M Wie kann ich festlegen, dass ein Attribut maximal den Wert 0 erreicht, also nicht in den negativen Bereich fällt? Java Basics - Anfänger-Themen 4
M Wie kann ich eine Methode aus einem Interface in eine Klasse implementieren, so dass sie ihre Funktion ausführt? Java Basics - Anfänger-Themen 7
X Wie erreiche ich, dass ein Robot weitere Attribute hat, die nicht materialisiert sind, sondern nur über get/ set-Methoden simuliert sind? Java Basics - Anfänger-Themen 1
B Programm, dass alle 3 Tage eine Webseite öffnet? Java Basics - Anfänger-Themen 20
H So viele Fehlermeldungen, dass ich nicht weiß wo das Problem ist. Java Basics - Anfänger-Themen 6
T Feststellen, dass Wert zu groß; Caesar Chiffre Java Basics - Anfänger-Themen 3
mhmt_03 dafür sorgen, dass im JTextfield nur zahlen eingebbar sind Java Basics - Anfänger-Themen 9
M Was habe ich hier falsch, dass wenn ich z.B.: 11 eingebe mir false zurück gegeben wird? Java Basics - Anfänger-Themen 2
W Programm dass Palindrome erkennt Java Basics - Anfänger-Themen 6
B Automatisierung von Jobs / @EJB Scheduler / Verhinderung, dass Queue überläuft Java Basics - Anfänger-Themen 2
Dimax Wie erkennt man dass der gesuchte am Zeilenanfang steht Java Basics - Anfänger-Themen 10
M java.io.FileNotFoundException trotz dass Verzeichnis korrekt angegeben ist! Java Basics - Anfänger-Themen 20
M In Netbeans Programm so abspeichern dass es funktioniert Java Basics - Anfänger-Themen 8
W Wie kann man folgenden Code abändern, dass er den Score mit Zahl anzeigt? Java Basics - Anfänger-Themen 3
X wie kann ich in bluej/java einene 2d array mit zahlen fuellen, so dass sich diese in der der zeilen Java Basics - Anfänger-Themen 2
S Double mithilfe eines Scanners so einlesen, dass ich damit rechnen kann Java Basics - Anfänger-Themen 4
1 2D-Array, dass das pascalsche Dreieck berechnet Java Basics - Anfänger-Themen 2
E Methoden Wie kann ich eine Methode so schreiben, dass Methodenaufruf polymorph erfolgen kann? Java Basics - Anfänger-Themen 8
D 100.0% gleichmäßig aufteilen, so dass Summe 100.0% sind, nicht 99,9% oder 100,1% Java Basics - Anfänger-Themen 3
B Liebesprogramm erstellt aber wie sorg ich dafür, dass es im bildschrim agezeigt wird? Java Basics - Anfänger-Themen 16
S Festlegen, dass Subklasse nicht erlaubt ist? Java Basics - Anfänger-Themen 3
S Abstrakte Klasse, festlegen, dass Methode verändert werden muss. Java Basics - Anfänger-Themen 4
T Vorschreiben, dass Konstruktor überschrieben wird Java Basics - Anfänger-Themen 10
G Warum geht dass nicht? Actionlistener geht nicht. Java Basics - Anfänger-Themen 4
A wie durch klicken regeln dass nächster "case" auge Java Basics - Anfänger-Themen 15
E Vermeiden,dass mehrere Instanzen eines Java-Programms laufen Java Basics - Anfänger-Themen 2
B nach Zeichen suchen dass im string mehrmals vorkommt Java Basics - Anfänger-Themen 3
J Rekursiv muss dass laufen! Java Basics - Anfänger-Themen 11
K Brauche nur Tipps Leute habe keine plan wie ich dass machen Java Basics - Anfänger-Themen 4
T Suche ein array dass dir stets die freien indexe gibt Java Basics - Anfänger-Themen 7
M Java-Software so anbieten, dass sie leicht zu starten ist Java Basics - Anfänger-Themen 16
C Mein Programm rechnet lieber als dass es malt - warum? Java Basics - Anfänger-Themen 10
T Programm so abbrechen, dass finally ausgeführt wird Java Basics - Anfänger-Themen 7
U super-Konstruktor Aufrufen mit Object, dass Exception wirft Java Basics - Anfänger-Themen 2
D Regex greift nicht richtig Java Basics - Anfänger-Themen 4
C Darstellung von Datum - Codes richtig? Java Basics - Anfänger-Themen 2
C Rechnen mit Brüchen, ist meine Lösung soweit richtig? Java Basics - Anfänger-Themen 4
M OOP Brüche nicht richtig berechnen Java Basics - Anfänger-Themen 3
I Bild richtig speichern / Hochkant im File Explorer, nach Upload vertikal Java Basics - Anfänger-Themen 9
B Hashmap richtig bauen, die Tripel auf Zahl abbildet? Java Basics - Anfänger-Themen 10
K Warum läuft das Programm nicht(bzw. nicht richtig) Java Basics - Anfänger-Themen 4
K REGEX - Rechnungsbetrag wird nicht richtig ausgelesen. Java Basics - Anfänger-Themen 3
B Semaphoren in Abhängigkeit an Bedingungen richtig setzen Java Basics - Anfänger-Themen 3
berserkerdq2 Habe ich die Aufgabe richtig gelöst? Java Basics - Anfänger-Themen 3
R CSV Reader läuft nicht richtig an Java Basics - Anfänger-Themen 8
E Umlaute und Sonderzeichen werden nach der Build Project nicht richtig angezeigt Java Basics - Anfänger-Themen 2
G jButton führt Main Methode nicht richtig aus Java Basics - Anfänger-Themen 3
G Main Methode wird beim ersten Aufruf nicht richtig ausgeführt Java Basics - Anfänger-Themen 1
milan123 das ist meine aufgabe ich hab das problem das bei mir Wenn ich die Richtung der Linien verändern will und drei davon sind richtig, verändere ich die 4 Java Basics - Anfänger-Themen 3
JensXF Methode überschreiben, so richtig? Java Basics - Anfänger-Themen 4
C Programm das feststellen kann, ob eine eingegebene Zahl einem Schaltjahr entspricht, richtig geschrieben? Java Basics - Anfänger-Themen 11
C Sind die while-Schleifen richtig in for-Schleifen ersetzt worden? Java Basics - Anfänger-Themen 8
S Daten/Klassen/Packages richtig updaten!? Java Basics - Anfänger-Themen 2
L Ist der Code richtig Java Basics - Anfänger-Themen 3
J Wie bestehenden Quellcode in IDE richtig übernehmen Java Basics - Anfänger-Themen 27
F Methoden Methode richtig aufrufen Java Basics - Anfänger-Themen 3
D Klassen Klassendiagramm richtig erstellen Java Basics - Anfänger-Themen 20
J Module richtig einbinden Java Basics - Anfänger-Themen 2
B Sind meine If-Statements richtig angesetzt ? Java Basics - Anfänger-Themen 27
V Boolean Wert nicht richtig erkannt Java Basics - Anfänger-Themen 4
X Wie Generics richtig benutzen ? Java Basics - Anfänger-Themen 5
P Stringbuilder richtig einsetzen Java Basics - Anfänger-Themen 1
T if else Befehl funktioniert nicht richtig Java Basics - Anfänger-Themen 27
A Array richtig füllen Java Basics - Anfänger-Themen 2
S String richtig formatieren Java Basics - Anfänger-Themen 2
P Methoden richtig anwenden Java Basics - Anfänger-Themen 3
O Popoup Menü im JTable richtig anzeigen Java Basics - Anfänger-Themen 6
D Richtig für Programmieren an der UNI lernen Java Basics - Anfänger-Themen 8
X Best Practice Ein int Array richtig mischen Java Basics - Anfänger-Themen 20
D Richtig Vorbereiten auf eine Programmier Klausur Studium. Java Basics - Anfänger-Themen 7
M ObservableList wird nicht richtig geleert Java Basics - Anfänger-Themen 0
T Sortieralgorithmen richtig? Java Basics - Anfänger-Themen 1
X Objekte einer ArrayList richtig ausgeben? Java Basics - Anfänger-Themen 8
S Wie implementiere ich MouseDragged richtig Java Basics - Anfänger-Themen 7
F Konstruktor richtig implementiert? Frage zu Benutzereingaben... Java Basics - Anfänger-Themen 9
I OOP Objektnamen über die Konsole richtig einlesen Java Basics - Anfänger-Themen 9
P Input/Output PQ-Formel wird nicht richtig berechnet Java Basics - Anfänger-Themen 6
P Zeichenkette Zeichen ausschlißen funktioniert nicht richtig Java Basics - Anfänger-Themen 9
H Wie lerne ich Java richtig? Java Basics - Anfänger-Themen 2
N Ich weiß nicht, wie ich meinen Code richtig designen soll und komme nicht weiter Java Basics - Anfänger-Themen 4
B Wie instanzisiert man einen Cursor richtig? Java Basics - Anfänger-Themen 3
J Polymorphie und Dynamisches Binden richtig nutzen Java Basics - Anfänger-Themen 11
N Best Practice Ist die Sortierung richtig? Java Basics - Anfänger-Themen 3
J Erste Schritte Lottozahlen richtig generieren. Java Basics - Anfänger-Themen 12
J Behauptung so richtig? Java Basics - Anfänger-Themen 10
R Listen richtig implementieren Java Basics - Anfänger-Themen 3
B OOP Objekt in IF erzeugen - funktioniert nicht so richtig Java Basics - Anfänger-Themen 11
A Methode richtig überladen Java Basics - Anfänger-Themen 6
H Aufgabe so richtig gelöst? Java Basics - Anfänger-Themen 14

Ähnliche Java Themen

Neue Themen


Oben