Wenn ich eine Methode von der anderen Klasse aufruft, wird null zurückgegeben. Ich werde Ihnen nur meinen Code unten zeigenJava: Der Aufruf der String-Rückgabe-Methode aus einer anderen Klasse gibt null zurück
class One{
Two two;
oneMethod(){
String str = "";
two.twoMethod(str);
S.o.p("Str in One class is " + str);
}
}
class Two{
String twoMethod(String str){
str = "From Two class";
S.o.p("Str in Two class is " + str);
return str;
}
}
Die Ausgabe sieht so aus: Str in einer Klasse ist ___ // Bedeutung null
Str in zwei Klasse ist Von zwei Klasse
Nachdem ich twoMethod() aufgerufen habe, wird das str, das anfangs null ist, jetzt mit dem neuen str-Wert "From Two class" überschrieben. Wenn wir nun str in One-Klasse drucken, sollte es mit dem übereinstimmen, was in der Klasse Two gedruckt wird. So verstehe ich den Fluss.
Habe ich irgendein Konzept/Regel über die Weitergabe von Strings vermisst? Jede Rückmeldung wird geschätzt. Vielen Dank!
du verwendest 'str', als ob java mit' pass-by-reference' arbeiten würde, deshalb wurde ich als dupe markiert. Sie müssen es in "One" ab "str = two.twoMethod (str);" eingeben, damit "str" einen Wert von "return" erhält. Das heißt, Ihr "str" -Parameter in 'twoMethod' ist/ist dort nutzlos, da der bereitgestellte' String' trotzdem neu zugewiesen wird. – SomeJavaGuy
Sie sollten Materialien über "unveränderliche Objekte" in Java lesen. Du vermisst tatsächlich ein Konzept. Oracle hat eine kleine Dokumentation über https://docs.oracle.com/javase/tutorial/essential/concurrency/immutable.html (hier im Kontext der Parallelität, weil es das wichtigste Thema für unveränderliche Objekte ist). – Wis
Auch diese Aussage ist nicht korrekt "Str in einer Klasse ist ___ // bedeutet null". Variable str ist die leere Zeichenfolge. Das ist ganz anders als null. – RubioRic