class Main { public static void main(String[] args) { String s1 = "xy"; String s2 = s1; s1 = s1 + s2 + "z"; System.out.println(s1); System.out.println(s2); }}當我運行代碼時,我期望得到這樣的結果,因為 s1=s2 的值:xyxyzxyxyz但實際輸出是:xyxyzxy我不確定為什么我沒有得到相同的答案?是因為將 s1 更改為值“xyxyz”的代碼行是在使 s1=s2 之后運行的嗎?
3 回答

小唯快跑啊
TA貢獻1863條經驗 獲得超2個贊
String s2 = s1;
這是一項任務,而不是永恒平等的指定。
該行的意思是,“當程序執行這一行時,將變量的值設置為與變量執行時包含的s2
值相同?!?code>s1
以后對該變量的任何更改都s1
不會影響s2
. 這項任務只是暫時傳遞信息,僅此而已。

慕容3067478
TA貢獻1773條經驗 獲得超3個贊
本質上,當您執行 s1 = s2 時,您并沒有將這兩個對象綁定到一個對象中,而是暫時使它們的值相同(這有點簡化)。如果您要更改其中一個的值,則不會影響另一個的值。
想象一下有一個 .txt 文件。您可以在其中輸入任何您想輸入的內容,然后復制并粘貼它。然后,您返回原始文件并繼續輸入。盡管原始文件中的文本已更改,但副本文件中的文本并未更改。這與這里發生的情況基本相似。
添加回答
舉報
0/150
提交
取消