本篇文章給大家分享的是有關(guān)java 中String.equals與==有什么不同,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
發(fā)展壯大離不開廣大客戶長期以來的信賴與支持,我們將始終秉承“誠信為本、服務(wù)至上”的服務(wù)理念,堅持“二合一”的優(yōu)良服務(wù)模式,真誠服務(wù)每家企業(yè),認真做好每個細節(jié),不斷完善自我,成就企業(yè),實現(xiàn)共贏。行業(yè)涉及成都廣告制作等,在網(wǎng)站建設(shè)、網(wǎng)絡(luò)營銷推廣、WAP手機網(wǎng)站、VI設(shè)計、軟件開發(fā)等項目上具有豐富的設(shè)計經(jīng)驗。
java 中String.equals和==的比較
初學java有段時間了,但是昨晚忽然就被"asd"==getpara("password")搞得不開心了:確實JAVA很多東西和以前接觸過的語言完全不一樣,比如最簡單的new String("asd") !=new String ("asd")。
1 一個最簡單的程序:
public class A { public static void main(String args[]) { String s1 = "Hello"; String s2 = "Hello"; System.out.println(s1 == s2); } }
肯定很多人說,輸出true,確實是輸出true,s1和s2引用的是同一個東西嘛。但是這個程序如果換一種寫法,那么肯定就不太一樣了。
2 第一種變體:
public class A { public static void main(String args[]) { String s1 = "Hello"; String s2 = new String("Hello"); System.out.println(s1 == s2); System.out.println(s1.equals(s2)); } }
或者:
public class A { public static void main(String args[]) { String s1 = new String("Hello"); String s2 = new String("Hello"); System.out.println(s1 == s2); System.out.println(s1.equals(s2)); } }
那么結(jié)果就有點不太確定了,有些人很壞的想到了,單獨拿出來,肯定至少有一個不會相等。
這兩個程序的結(jié)果都是false true,原因很簡單,JAVA是一個基本完全面向?qū)ο蟮恼Z言,s1 == s2 判斷的是他的引用(相當于內(nèi)存地址、指針),equals則是使用這個對象自身的方法去判斷值是否相等。
在以下表達式中:
String s1 = "Hello"; String s2 = new String("Hello");
JVM得到的是兩個不同的信息:
1.我要創(chuàng)建一個“Hello”字符串。
2.我要創(chuàng)建一個新的“Hello”字符串,不要跟原來的一樣的。
于是,s1 != s2.
3 第二種變體:
順序排列:
public class A { public static void main(String args[]) { String s1 = new String("Hello"); String s2 = new String("Hello"); String s3 = "Hello"; s1=s1.intern(); s2=s2.intern(); System.out.println(s1 == s2); System.out.println(s1.equals(s2)); System.out.println(s3 == s2); System.out.println(s3.equals(s2)); } }
打亂順序排列:
public class A { public static void main(String args[]) { String s1 = new String("Hello"); String s3 = "Hello"; s1=s1.intern(); String s2 = new String("Hello"); s2=s2.intern(); //也可以String s2 = new String("Hello").intern(); System.out.println(s1 == s2); System.out.println(s1.equals(s2)); System.out.println(s3 == s2); System.out.println(s3.equals(s2)); } }
那么這次應(yīng)該很清楚了=
兩個object,但是中間加入了一些羞羞的東西,于是答案肯定是true true true true。
那么intern到底是什么。
4 intern作用:
當調(diào)用 intern 方法時,如果池已經(jīng)包含一個等于此 String 對象的字符串(該對象由 equals(Object) 方法確定),則返回池中的字符串。
否則,將此 String 對象添加到池中,并且返回此 String 對象的引用。
intern的適用情況:多個相同的大字符串同時出現(xiàn)的情況,例如可能出現(xiàn)多個相同消息的消息隊列的設(shè)計。
以上就是java 中String.equals與==有什么不同,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)頁標題:java中String.equals與==有什么不同
網(wǎng)站網(wǎng)址:http://sd-ha.com/article40/jsjieo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計、定制開發(fā)、用戶體驗、Google、外貿(mào)網(wǎng)站建設(shè)、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)