Java中String的記憶體空間分配

2021-08-13 17:02:58 字數 720 閱讀 5849

我們先舉個例子:

public

class test

}

輸出結果:

false

true

process finished with

exit code 0

我們可以看到明明是兩個一樣的字串得到的結果卻不一樣

比較兩部分的**,第一部分字串是使用了new,第二部分是用賦值運算子「=」。

new是在堆區開闢了兩個記憶體空間,第一部分的**是分別開闢了兩個記憶體空間,如下圖所示,每個記憶體空間存放字串「abc」

記憶體空間包括位址和值,「==」指的是完全相等,但str1和str2雖然值是一樣,但位址不同,故而輸出結果是false

第二部分則是在常量池分別存放了兩個常量,但如果定義了乙個常量,又再次定義乙個常量,系統會搜尋常量池中是否已經存在與新常量相同的值,如果一樣,就不會再開闢乙個空間存放該常量,這樣str3 和str4的引用就是指向同乙個記憶體空間。

如圖所示:

因為str3和str4所引用的是相等的,故而輸出結果是true

Java中判斷String不為空

一 判斷乙個字串str不為空的方法有 1.str null 2.equals str 3.str.length 0 注意 length是屬性,一般集合類物件擁有的屬性,取得集合的大小。例如 陣列.length就是取得陣列的長度。length 是方法,一般字串類物件有該方法,也是取得字串長度。例如 字...

java中String的記憶體執行過程

string類建立物件的方法可以分為以下三種 string str1 hello string str2 he new string llo string str3 he llo system.out.println str1 str2 system.out.println str1 str3 輸出...

C 中string為空 詳細解讀

c 判斷字串為空 的 方法們 按照效能排序 a.length 0 a string.empty a c 中大多數時候 和string.empty可以相互使用,但是string.empty效能更好,原因 分配乙個長度為0的儲存空間 string.empty 記憶體並沒有為字元分配空間。是否為空的最佳方...