當我從另一個類調用方法時,它將返回null。我就告訴你下面Java:從其他類返回的調用字符串返回方法null
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;
}
}
輸出看起來像我的代碼: STR基因座的一類___ //兩個類別含義空
str是從二級
我對此的理解是,在調用twoMethod()之後,最初爲null的str現在將被新的str值「From Two class」覆蓋。現在,當我們在一個類中打印str時,它應該與Two類中打印的內容相同。這就是我對流程的理解。
我錯過了關於傳遞字符串的任何概念/規則嗎?任何反饋意見。謝謝!
你正在使用'str',好像java會與'pass-by-reference'一起工作,這就是爲什麼我標記爲'笨蛋'。你需要在'str'中重複使用'str',以便'str'從'return'得到一個值。那個beeing說,'twoMethod'中的'str'參數在那裏是無用的,因爲提供的String將被重新分配。 – SomeJavaGuy
你應該閱讀關於Java中「不可變對象」的材料。你確實錯過了一個概念。 Oracle在https://docs.oracle.com/javase/tutorial/essential/concurrency/immutable.html上有一小段文檔(這裏是在併發環境中,因爲它是不可變對象最重要的主題)。 – Wis
此外,這種說法是不正確的「一個類中的字符串是___ //空值」。變量str是空字符串。這與空無異。 – RubioRic