最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java 字符串池的深入理解

 更新時(shí)間:2017年08月20日 16:06:37   作者:楊鑫newlfe  
這篇文章主要介紹了java 字符串池的深入理解的相關(guān)資料,這里提供實(shí)例代碼幫助大家學(xué)習(xí)理解這部分內(nèi)容,希望大家能夠掌握,需要的朋友可以參考下

java 字符串池的深入理解

字符串池是Java的一個(gè)特性,可以通過(guò)一段代碼理解。

String a = "Hello"; 
 
String b = "Hello"; 
 
String c = new String("Hello"); 
 
String d = new String("Hello"); 
 
System.out.println(a == b); 
 
System.out.println(b == c); 
 
System.out.println(c == d); 
 
System.out.println(a.equals(b)); 
 
System.out.println(b.equals(c)); 
 
System.out.println(c.equals(d)); 

結(jié)果是true,false,false,true,true,true。

這里就涉及到字符 串池?!白址亍?,是Java為了提高內(nèi)存利用率而采用的措施:當(dāng)遇到String a = "Hello"; 這樣的語(yǔ)句時(shí),Java會(huì)先在字符串池中尋找是否已經(jīng)存在"Hello"這個(gè)字符串,如果沒(méi)有,則建立字符串"Hello"對(duì)象,然后變量 a 指向這個(gè)地址;然后遇到語(yǔ)句String b = "Hello",這時(shí)字符串池中已經(jīng)有 "Hello"了,所以直接讓變量b也指向這個(gè)地址,省去了重新分配的麻煩。而在Java中,操作符“==”對(duì)于兩個(gè)基本型來(lái)說(shuō),是判斷其內(nèi)容是否相同, 對(duì)于兩個(gè)對(duì)象來(lái)說(shuō),則是判斷其地址是否相同,所以a == b返回 true。那么String c = new String("Hello")又如何處理呢?如果是這種寫法,則不會(huì)去訪問(wèn)字符串池,而是先為變量 c 開(kāi)辟空間,然后將值寫入空間。所以a == c返回false,c == d同樣返回false。至于String的equals方法,因?yàn)樗容^的不是對(duì)象的地址,而是對(duì)象的值,所以都返回true就不奇怪了。

Java虛擬機(jī)有一個(gè)字符串池,保存著幾乎所有的字符串對(duì)象。字符串表達(dá)式總是指向字符串池 中的一個(gè)對(duì)象。使用new操作創(chuàng)建的字符串對(duì)象不指向字符串池中的對(duì)象但是可以使用intern方法使其指向字符串池中的對(duì)象(注:如果池中已經(jīng)有相同的 字符串--使用equals方法確定,則直接返回池中的字符串,否則先將字符串添加到池中,再返回)。池中兩個(gè)相等的字符串如果使用“==”來(lái)比較將返回 真。

如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

最新評(píng)論

乌拉特中旗| 敦煌市| 和硕县| 调兵山市| 行唐县| 乌苏市| 恩平市| 城口县| 沙田区| 海阳市| 琼海市| 广平县| 东海县| 三明市| 孟州市| 广水市| 广州市| 开封县| 富顺县| 青神县| 花莲市| 太仓市| 黎川县| 漳州市| 武隆县| 安徽省| 浑源县| 临洮县| 定南县| 高平市| 定结县| 宁化县| 达日县| 上犹县| 岑巩县| 通化市| 光山县| 资中县| 安西县| 佳木斯市| 长沙市|