Referenzübergabe eines String-Objekts
Im JDK besteht die Klasse String mit Konstruktor und allem was dazugehört. Dadurch bin ich bis jetzt davon ausgegangen, dass String auch wirklich ein Objekt ist und als solches zu behandeln ist.
Nun habe ich aber folgendes Problem:
Ich habe eine Methode, die mir ein Datenfeld aus der main Methode ohne Rückgabewert ändert. Bei normalen Objekten funktioniert dies auch wunderbar:
Tester:
Changer:
TestObjekt
Ausgabe der Konsole
Mit String erhalte ich allerdings folgendes (komplett analoges Beispiel:
Tester:
Changer:
Test-Objekt:
String
Ausgabe der Konsole:
Also wird bei einem String nur der Wert übergeben, nicht die Referenz?
Obwohl String eigentlich ein Objekt ist??
Woran erkenne ich solche Objekte?
Ich nehm mal an, bei Double, Integer etc. wirds nicht viel anders sein?
Im JDK besteht die Klasse String mit Konstruktor und allem was dazugehört. Dadurch bin ich bis jetzt davon ausgegangen, dass String auch wirklich ein Objekt ist und als solches zu behandeln ist.
Nun habe ich aber folgendes Problem:
Ich habe eine Methode, die mir ein Datenfeld aus der main Methode ohne Rückgabewert ändert. Bei normalen Objekten funktioniert dies auch wunderbar:
Tester:
Java:
package object;
public class ObjectTester {
public static void main(String[] args) {
TestObject test;
test = new TestObject("Main Methoden-String");
ObjectChanger changer = new ObjectChanger(test);
System.out.println("String vor der Methode");
System.out.println(test.getString());
changer.change();
System.out.println("String nach der Methode");
System.out.println(test.getString());
}
}
Changer:
Java:
package object;
public class ObjectChanger {
private TestObject test;
public ObjectChanger(TestObject test){
this.test = test;
}
public void change(){
test.setString("Von der Methode erstellter String");
}
}
TestObjekt
Java:
package object;
public class TestObject {
private String string;
public TestObject(String string){
this.string = string;
}
public void setString(String string){
this.string = string;
}
public String getString(){
return string;
}
}
Ausgabe der Konsole
also wie gewünschtString vor der Methode
Main Methoden-String
String nach der Methode
Von der Methode erstellter String
Mit String erhalte ich allerdings folgendes (komplett analoges Beispiel:
Tester:
Java:
package string;
public class StringTester {
public static void main(String[] args) {
String string;
string = "Main Methoden-String";
StringChanger changer = new StringChanger(string);
System.out.println("String vor dem Durchlaufen der Methode");
System.out.println(string);
changer.change();
System.out.println("String nach dem Durchlaufen der Methode");
System.out.println(string);
}
}
Changer:
Java:
package string;
public class StringChanger {
private String string;
public StringChanger(String string){
this.string = string;
}
public void change(){
string = "Von der Methode erstellter String";
}
}
String
Ausgabe der Konsole:
String vor dem Durchlaufen der Methode
Main Methoden-String
String nach dem Durchlaufen der Methode
Main Methoden-String
Also wird bei einem String nur der Wert übergeben, nicht die Referenz?
Obwohl String eigentlich ein Objekt ist??
Woran erkenne ich solche Objekte?
Ich nehm mal an, bei Double, Integer etc. wirds nicht viel anders sein?