亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

即使 s2=s1,為什么在第二行代碼中打印“xy”?

即使 s2=s1,為什么在第二行代碼中打印“xy”?

守著一只汪 2023-07-28 10:18:26
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 回答

?
RISEBY

TA貢獻1856條經驗 獲得超5個贊

JavaString是不可變的。當您重新分配時s1,您將創建一個現在引用的新Strings1。s2仍然引用原始字符串。



查看完整回答
反對 回復 2023-07-28
?
小唯快跑啊

TA貢獻1863條經驗 獲得超2個贊

String s2 = s1;這是一項任務,而不是永恒平等的指定。

該行的意思是,“當程序執行這一行時,將變量的值設置為與變量執行時包含的s2值相同?!?code>s1

以后對該變量的任何更改都s1不會影響s2. 這項任務只是暫時傳遞信息,僅此而已。


查看完整回答
反對 回復 2023-07-28
?
慕容3067478

TA貢獻1773條經驗 獲得超3個贊

本質上,當您執行 s1 = s2 時,您并沒有將這兩個對象綁定到一個對象中,而是暫時使它們的值相同(這有點簡化)。如果您要更改其中一個的值,則不會影響另一個的值。

想象一下有一個 .txt 文件。您可以在其中輸入任何您想輸入的內容,然后復制并粘貼它。然后,您返回原始文件并繼續輸入。盡管原始文件中的文本已更改,但副本文件中的文本并未更改。這與這里發生的情況基本相似。


查看完整回答
反對 回復 2023-07-28
  • 3 回答
  • 0 關注
  • 152 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號