Java虛擬機對于字符串引用,由于在字符串的"+"連接中,有字符串引用存在,而引用的值在程序編譯期是無法確定的,即I Love +s1中的s1無法被編譯器優化,只有在程序運行期來動態分配并將連接后的新地址賦給s3和s4。所以上面程序的結果也就為s3中儲存一個新地址,s4中儲存另一個新地址。另外,string類型比較特殊,首先它會在常量池中尋找有沒有這個值,也就是I Love imooc,如果有,則僅僅在堆內存中創建一個對象否則會創建兩個對象,首先在常量池中一個,然后拷貝一個在堆內存,當然棧內存中的變量引用還是指向堆內存里面的對象。
2016-12-14
加雙引號的為常量,s1? 為變量,變量加常量所以是新的內存空間,常量相加直接調用。
2017-01-24
Java虛擬機對于字符串引用,由于在字符串的"+"連接中,有字符串引用存在,而引用的值在程序編譯期是無法確定的,即I Love +s1中的s1無法被編譯器優化,只有在程序運行期來動態分配并將連接后的新地址賦給s3和s4。所以上面程序的結果也就為s3中儲存一個新地址,s4中儲存另一個新地址。另外,string類型比較特殊,首先它會在常量池中尋找有沒有這個值,也就是I Love imooc,如果有,則僅僅在堆內存中創建一個對象否則會創建兩個對象,首先在常量池中一個,然后拷貝一個在堆內存,當然棧內存中的變量引用還是指向堆內存里面的對象。
2017-01-09
告訴你把,new是重新開辟內存空間,2個new開辟了2個內存空間,就相當于,前面超市有面賣,后面超市也有面賣。你能說2家超市相等嗎
2016-12-12
String 對象創建后則不能被修改,是不可變的,所謂的修改其實是創建了新的對象,所指向的內存空間不同.