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

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么s3!=s4?

在這一節的參考代碼里,為什么s4!=s3?創建s3,s4的時候又沒有加new,所以應該內存空間應該相同啊

正在回答

4 回答

加雙引號的為常量,s1? 為變量,變量加常量所以是新的內存空間,常量相加直接調用。

4 回復 有任何疑惑可以回復我~
#1

慕粉0958453215 提問者

哦哦,雙引號肯定是常量對吧?如果兩個常量相加就會結果相等吧?
2016-12-15 回復 有任何疑惑可以回復我~
#2

鋪平失望的灰燼 回復 慕粉0958453215 提問者

嗯 是的
2016-12-23 回復 有任何疑惑可以回復我~

Java虛擬機對于字符串引用,由于在字符串的"+"連接中,有字符串引用存在,而引用的值在程序編譯期是無法確定的,即I Love +s1中的s1無法被編譯器優化,只有在程序運行期來動態分配并將連接后的新地址賦給s3和s4。所以上面程序的結果也就為s3中儲存一個新地址,s4中儲存另一個新地址。另外,string類型比較特殊,首先它會在常量池中尋找有沒有這個值,也就是I Love imooc,如果有,則僅僅在堆內存中創建一個對象否則會創建兩個對象,首先在常量池中一個,然后拷貝一個在堆內存,當然棧內存中的變量引用還是指向堆內存里面的對象。

5 回復 有任何疑惑可以回復我~

告訴你把,new是重新開辟內存空間,2個new開辟了2個內存空間,就相當于,前面超市有面賣,后面超市也有面賣。你能說2家超市相等嗎

0 回復 有任何疑惑可以回復我~

String 對象創建后則不能被修改,是不可變的,所謂的修改其實是創建了新的對象,所指向的內存空間不同.

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
Java入門第三季
  • 參與學習       409766    人
  • 解答問題       4543    個

Java中你必須懂得常用技能,不容錯過的精彩,快來加入吧

進入課程

為什么s3!=s4?

我要回答 關注問題
微信客服

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

幫助反饋 APP下載

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

公眾號

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