一良姆、Java中字符串的不變性
String對(duì)象創(chuàng)建后則不能修改鹅很,是不可變得像吻,所謂的修改其實(shí)是創(chuàng)建了新的對(duì)象堕汞,所指向的內(nèi)存空間不同勺爱。如圖所示:
運(yùn)行結(jié)果:
總結(jié):
1.通過String? s1="愛慕課",聲明了一個(gè)字符串對(duì)象臼朗,s1存放了到字符串的引用邻寿,在內(nèi)存中的存放引用關(guān)系如圖所示:
然后通過s1="歡迎來到:"+s1;改變了字符串s1,其實(shí)質(zhì)是創(chuàng)建了一個(gè)新的字符串對(duì)象视哑,變量s1指向了新創(chuàng)建的字符串對(duì)象,如下圖所示:
2.一旦一個(gè)字符串在內(nèi)存中創(chuàng)建誊涯,則這個(gè)字符串將不可改變挡毅。如果需要一個(gè)可以改變的字符串,我們可以通過使用StringBuffer或者StringBuilder.
3.每次new一個(gè)字符串就是產(chǎn)生一個(gè)新的對(duì)象暴构,即使兩個(gè)字符串的內(nèi)容相同跪呈,使用"=="比較時(shí)也為"false",如果需要比較內(nèi)容是否相容,應(yīng)使用"equals()"方法取逾。
二耗绿、Java中String類的常用方法
String類的常用方法:
結(jié)合代碼熟悉下方法的使用:
運(yùn)行結(jié)果:
注意:
1.字符串str中的字符的索引從0開始,范圍為0到str.length()-1;
2.使用indexOf進(jìn)行字符串或字符串的查找時(shí)砾隅,如果匹配返回位置索引误阻;如果沒有匹配結(jié)果,返回-1晴埂;
3.使用substring(beginIndex,endIndex)進(jìn)行字符串截取時(shí)究反,包括beginIndex位置的字符,不包括endIndex位置的字符儒洛。
實(shí)例二:
運(yùn)行結(jié)果:
注意:
"=="和equals()有什么區(qū)別呢:
==:判斷兩個(gè)字符串在內(nèi)存中的首地址是否相同精耐,即是否是同一個(gè)字符串對(duì)象
equals:比較存儲(chǔ)在兩個(gè)字符串對(duì)象中的內(nèi)容是否一致
三、Java中的String Builder類的常用方法
例如:在下面的實(shí)例代碼中琅锻,創(chuàng)建了String Builder對(duì)象卦停,用來存儲(chǔ)字符串,并對(duì)其進(jìn)行追加和插入操作恼蓬,這些操作修改了str對(duì)象的值惊完,而沒有創(chuàng)建新的對(duì)象,這就是String Builder和String的最大的區(qū)別
運(yùn)行結(jié)果: