首頁 >Java >java教程 >比較分析Java String 和 new String()的差異

比較分析Java String 和 new String()的差異

Y2J
Y2J原創
2017-04-27 09:54:591158瀏覽

這篇文章主要介紹了Java String 和new String()的區別的相關資料,需要的朋友可以參考下

Java String 和new String()的區別

堆疊區存參考和基本類型,不能存對象,而堆區存對象。 ==是比較位址,equals()比較物件內容。

String str1 = "abcd"的實作過程:首先堆疊區建立str引用,然後在String池(獨立於堆疊和堆疊而存在,儲存不可變數)中尋找其指向的內容為"abcd"的對象,如果String池中沒有,則創建一個,然後st​​r指向String池中的對象,如果有,則直接將str1指向"abcd"";如果後來又定義了字串變數str2 = "abcd",則直接將str2引用指向String池中已經存在的“abcd”,不再重新建立物件;當str1進行了賦值(str1=“abc”),則str1將不再指向"abcd",而是重新指String池中的"abc",此時如果定義String str3 = "abc",進行str1 == str3操作,傳回值為true,因為他們的值一樣,位址一樣,但是如果內容為"abc "的str1進行了字串的+連接str1 = str1+"d";此時str1指向的是在堆中新建的內容為"abcd"的對象,即此時進行str1==str2,返回值false,因為位址不一樣。之前的對象,而是重新創建一個對象並指向它,所以如果此時進行str3==str4返回值是false,因為兩個對象的地址不一樣,如果是str3.equals(str4),返回true,因為內容相同。

以上是比較分析Java String 和 new String()的差異的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn