1. 程式人生 > 其它 >String,記憶體剖析,常用方法_聽韓順平課筆記

String,記憶體剖析,常用方法_聽韓順平課筆記

1.String結構剖析

String類的理解和建立物件

  • 使用Unicode編碼,一個字元佔兩個位元組
  • String有很多構造器,構造器的過載
  • String是final類,不能被其他的類繼承
  • String有屬性private final char value[];用於存放字串內容,所以String的底層是個char陣列
  • value[]是一個final屬性,是不可修改的(地址不可修改,指向新地址),但是單個字元內容是可以變化的

String的繼承關係:

  • 實現了Serializable,說明String可以序列話,用於網路傳輸
  • 實現了Comparable,說明String物件可以比較

String的地址不可變性的證明:

  • 單獨的內容的改變時允許的
  • 但不允許改變地址空間

String的八點特性:

2.String建立剖析

String的建立方式(兩種):

兩種建立String物件的區別:

兩種建立String物件的區別(記憶體分析圖):

練習題1:

練習題2:

3.String測試題1

練習題3:T,F,T,F

intern()方法解析:

練習題4:

4.String測試題2

練習題5:做錯了,答案:T,T,T,F

5.String物件特性1

習題1:

習題1解:

  • 建立一個物件"hello"
  • 在常量池中檢視是否有"haha"物件,沒有則建立,將s1指向"haha"

習題2:

習題2答案:

習題3:

習題3思路分析,追原始碼(重點):

習題3記憶體佈局圖:

驗證習題3答案:輸出false

  • c指向堆中,d指向池中

習題3小結:

  • 字串常量相加,看的是池
  • 字串變數相加,看的是堆

6.String物件特性2

練習題1:

練習題2:

  • 方法呼叫,開闢新棧,使用完畢後銷燬,
  • char陣列在堆中,其中的內容被修改了

練習2記憶體分析:

7.String常用方法1

String是儲存字串常量的,每次跟新都需要重新開闢空間,效率較低

String類的常用方法一覽:

String類的常用方法應用例項1:

8.String常用方法2

String類的常用方法應用例項2:

9.String常用方法3

format方法詳解: