国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java String 類的一些理解 關(guān)于==、equals、null

2019-11-26 16:19:35
字體:
供稿:網(wǎng)友
1、String 的==與equal()
在對(duì)字符串的相等判斷,==判斷的是地址是否相同,equal()判斷的是字符值是否相同。大多數(shù)時(shí)候==跟equal()的結(jié)果都是相同的。這是因?yàn)镾tring對(duì)象是不變模式的,如果你不是明確地new一個(gè)String對(duì)象,Java對(duì)于String對(duì)象的保存默認(rèn)的是會(huì)把新生成的String 對(duì)象放到一個(gè)緩沖區(qū),然后每次判斷緩沖區(qū)中是否已經(jīng)有了這個(gè)對(duì)象,如果有了,那么后建立的同樣字符值的String對(duì)象也會(huì)指向最初建立是該字符值對(duì)象的地址。也就是說字符值相同的時(shí)候,大多數(shù)情況下地質(zhì)也是相同的。==與equal()效果是相同的。但是當(dāng)對(duì)象是str = new String(“abc”)生成的而不是直接str = “abc”這樣賦值生成,或者經(jīng)過了一些字符串連接處理,或者通過StringBuffer等對(duì)象生成,都會(huì)在內(nèi)存中開辟新的地址的,這個(gè)時(shí)候==和 equal()結(jié)果是不同的。
是不是稍微有些復(fù)雜?這里需要一些關(guān)于內(nèi)存,堆棧,對(duì)象保存方面的理解。我不想糾纏于這個(gè)問題的討論。如果不能理解,那么只要記住如果你想要判斷兩個(gè)字符串的字符值是否相等,沒有別的要求的時(shí)候,那么請(qǐng)使用equal()而不是==,至于什么時(shí)候需要使用==,我想當(dāng)你需要的時(shí)候,你自然就會(huì)明白了。實(shí)際上,對(duì)于字符串的判斷,我們很少需要用==的。

2、關(guān)于str.equal(“abc”)和”abc”.equal(str)
這個(gè)好像爭(zhēng)論也挺多的,第一種常量寫在后面可能符合大多數(shù)人的習(xí)慣,也符合我們的邏輯思維。但是需要多一個(gè)str是否為null的判斷。否則這里是有可能出現(xiàn)異常的。而后一種寫法不需要多做關(guān)于是否為null這個(gè)判斷。就我個(gè)人喜好來說,比較喜歡后一種寫法。

3、關(guān)于String的null

/**
* 測(cè)試java的String為null 的情況
* create date:2009-6-3
* author:Administrator
*
*/
public static void testNull(){
String a= null,b = null,c="呵呵";
System.out.println(a == null);
System.out.println(a+b+c);
}
方法運(yùn)行結(jié)果:
true
nullnull呵呵
所以大家要注意了做字符串合并操作時(shí),別忘記判斷null,否則結(jié)果會(huì)不太讓你爽啊!
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 宁晋县| 乌兰察布市| 介休市| 阳曲县| 冕宁县| 遂昌县| 宁都县| 武城县| 广宗县| 慈溪市| 雅江县| 涞源县| 龙游县| 伊吾县| 旬阳县| 临西县| 平安县| 奉贤区| 阳新县| 谷城县| 明光市| 海宁市| 白银市| 阳江市| 义乌市| 疏勒县| 深水埗区| 仪陇县| 固镇县| 平塘县| 温州市| 新沂市| 赤城县| 两当县| 横山县| 纳雍县| 金山区| 枞阳县| 龙岩市| 桂林市| 林芝县|