一、Java中字符串的不變性
String對象創建后則不能修改,是不可變得,所謂的修改其實是創建了新的對象,所指向的內存空間不同。如圖所示:
運行結果:
總結:
1.通過String? s1="愛慕課",聲明了一個字符串對象,s1存放了到字符串的引用,在內存中的存放引用關系如圖所示:
然后通過s1="歡迎來到:"+s1;改變了字符串s1,其實質是創建了一個新的字符串對象,變量s1指向了新創建的字符串對象,如下圖所示:
2.一旦一個字符串在內存中創建,則這個字符串將不可改變。如果需要一個可以改變的字符串,我們可以通過使用StringBuffer或者StringBuilder.
3.每次new一個字符串就是產生一個新的對象,即使兩個字符串的內容相同,使用"=="比較時也為"false",如果需要比較內容是否相容,應使用"equals()"方法。
二、Java中String類的常用方法
String類的常用方法:
結合代碼熟悉下方法的使用:
運行結果:
注意:
1.字符串str中的字符的索引從0開始,范圍為0到str.length()-1;
2.使用indexOf進行字符串或字符串的查找時,如果匹配返回位置索引;如果沒有匹配結果,返回-1;
3.使用substring(beginIndex,endIndex)進行字符串截取時,包括beginIndex位置的字符,不包括endIndex位置的字符。
實例二:
運行結果:
注意:
"=="和equals()有什么區別呢:
==:判斷兩個字符串在內存中的首地址是否相同,即是否是同一個字符串對象
equals:比較存儲在兩個字符串對象中的內容是否一致
三、Java中的String Builder類的常用方法
例如:在下面的實例代碼中,創建了String Builder對象,用來存儲字符串,并對其進行追加和插入操作,這些操作修改了str對象的值,而沒有創建新的對象,這就是String Builder和String的最大的區別
運行結果: