Guten Tag, ich hoffe meine Frage ist hier erwünscht. Ich habe begonnen Java zu lernen und bin bei Klassen und Co. angekommen. Ich habe folgendes gelernt:
Wenn ich eine Klasse habe die Auto heißt, dann weiß ich das ich in diesem Beispiel keine zwei Objekte erstelle die den selben Wert haben sondern, dass ich mit auto2 nur einen Zeiger auf auto1 habe. Also wenn ich auto2 verändere, verändere ich eigentlich auto1.
Daraus ergibt sich das (auto1==auto2) immer true liefert, unabhängig deren Variablen-Werten. Da dieses true ja nur angibt das es das selbe Objekt ist.
Nun ist mir bei String etwas aufgefallen:
Das obige Beispiel müsste in der Konsole 2x 1 ausgeben, tut es aber nicht. Nur die erste 1 wird ausgegeben. b müsste doch ein Zeiger auf a sein? so müsste (a==b) immer true liefern da es die selben Objekte sind? Allerdings wird hier bei String anscheinend auf den Wert der Variable geschaut. Denn sobald ich b verändere(wo sich ja eigentlich a verändern müsste, da Zeiger) liefert (a==b) false zurück.
Warum ist das bei der String-Klasse so?
Würde mich freuen wenn sich jemand die Mühe macht mich aufzuklären.
MfG. Jay Tech.
Java:
public static void main(String[] args) {
Auto auto1 = new Auto();
Auto auto2 = auto1;
}
Wenn ich eine Klasse habe die Auto heißt, dann weiß ich das ich in diesem Beispiel keine zwei Objekte erstelle die den selben Wert haben sondern, dass ich mit auto2 nur einen Zeiger auf auto1 habe. Also wenn ich auto2 verändere, verändere ich eigentlich auto1.
Daraus ergibt sich das (auto1==auto2) immer true liefert, unabhängig deren Variablen-Werten. Da dieses true ja nur angibt das es das selbe Objekt ist.
Nun ist mir bei String etwas aufgefallen:
Java:
public static void main(String[] args) {
String a = "wert";
String b = a;
if(a==b){
System.out.print(1);
}
b = "anders";
if(a==b){
System.out.print(1);
}
}
Das obige Beispiel müsste in der Konsole 2x 1 ausgeben, tut es aber nicht. Nur die erste 1 wird ausgegeben. b müsste doch ein Zeiger auf a sein? so müsste (a==b) immer true liefern da es die selben Objekte sind? Allerdings wird hier bei String anscheinend auf den Wert der Variable geschaut. Denn sobald ich b verändere(wo sich ja eigentlich a verändern müsste, da Zeiger) liefert (a==b) false zurück.
Warum ist das bei der String-Klasse so?
Würde mich freuen wenn sich jemand die Mühe macht mich aufzuklären.
MfG. Jay Tech.