亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

如何區(qū)分JAVA中的equals與==

瀏覽:56日期:2022-08-31 16:47:16

java中的數(shù)據(jù)類(lèi)型,可分為兩類(lèi):

1.基本數(shù)據(jù)類(lèi)型,也稱(chēng)原始數(shù)據(jù)類(lèi)型。

byte,short,char,int,long,float,double,boolean 他們之間的比較,應(yīng)用雙等號(hào)(==),比較的是他們的值。

基本數(shù)據(jù)類(lèi)型比較 == 和 Equals 兩者都是比較值;equals()與==都是java中用于進(jìn)行比較的,返回boolean值,不同的是equals()是Object類(lèi)中定義的一個(gè)方法,==是一個(gè)比較運(yùn)算符。下面是equals()在Object中的源碼:

public boolean equals(Object obj) { return (this == obj); }

我們驚奇的發(fā)現(xiàn)這方法和==不是一模一樣嗎??

下面再來(lái)看看String類(lèi)中equals()方法的源碼:

public boolean equals(Object anObject){ //先進(jìn)行地址值的判斷,如果想等直接返回true if (this == anObject) { return true; } //如果地址不相等,判斷傳進(jìn)來(lái)的對(duì)象是不是String類(lèi)型的一個(gè)實(shí)例 if (anObject instanceof String) { //發(fā)現(xiàn)是string類(lèi)型的實(shí)例,將它強(qiáng)轉(zhuǎn)為string類(lèi)型(強(qiáng)轉(zhuǎn)之后就可以調(diào)用string的方法了) String anotherString = (String) anObject; //value是string內(nèi)部的一個(gè)char數(shù)組,每個(gè)string對(duì)象都對(duì)應(yīng)一個(gè)char數(shù)組,得到長(zhǎng)度 int n = value.length; //先進(jìn)行長(zhǎng)度的比較,如果相同才能進(jìn)行下一步 if (n == anotherString.value.length) { //發(fā)現(xiàn)長(zhǎng)度相同,將string對(duì)應(yīng)的char數(shù)組中的字符一個(gè)一個(gè)進(jìn)行比較 char v1[] = value; char v2[] = anotherString.value; int i = 0; while (n-- != 0) { if (v1[i] != v2[i]) return false; i++; } return true; } } return false; }

顯然String對(duì)equals()方法進(jìn)行了重寫(xiě),使得它具有比較String內(nèi)容是否相等的功能,此時(shí)的equals()就不在是僅僅比較對(duì)象地址了,

如果地址不相同,他會(huì)比較對(duì)象內(nèi)容是否相同,如果相同會(huì)返回true。

2.復(fù)合數(shù)據(jù)類(lèi)型(類(lèi))

當(dāng)他們用(==)進(jìn)行比較的時(shí)候,比較的是他們?cè)趦?nèi)存中的存放地址,所以,除非是同一個(gè)new出來(lái)的對(duì)象,他們的比較后的結(jié)果為true,否則比較后結(jié)果為false。

有如下代碼

public class TestString { public static void main(String[] args) { String s1 = 'Monday'; String s2 = 'Monday'; if (s1 == s2) { System.out.println('s1 == s2');} else{System.out.println('s1 != s2');} } }

編譯并運(yùn)行程序,輸出:

s1 == s2

說(shuō)明:s1 與 s2 引用同一個(gè) String 對(duì)象 -- 'Monday'!

改動(dòng)下程序

public class TestString {public static void main(String[] args) {String s1 = 'Monday';String s2 = new String('Monday');if (s1 == s2){System.out.println('s1 == s2');}else{System.out.println('s1 != s2');}if (s1.equals(s2)) {System.out.println('s1 equals s2');}else{System.out.println('s1 not equals s2');}}}

我們將s2用new操作符創(chuàng)建程序輸出:

s1 != s2s1 equals s2

說(shuō)明:s1 s2分別引用了兩個(gè)'Monday'String對(duì)象

總結(jié)如下:

equals()和==都是用于比較運(yùn)算。

equals()是Object類(lèi)中的一個(gè)方法,用于比較對(duì)象是否相等,在Object類(lèi)中,它的含義和==相同,比較的都是對(duì)象的地址,但有時(shí)我們要比較對(duì)象的內(nèi)容,此時(shí)要重寫(xiě)equals方法,例如String類(lèi)就默認(rèn)重寫(xiě)了equals方法比較對(duì)象的內(nèi)容。

==是一個(gè)比較運(yùn)算符,當(dāng)它兩邊是基本數(shù)據(jù)類(lèi)型時(shí),就是直接比較兩個(gè)數(shù)據(jù)的值,當(dāng)兩邊是對(duì)象時(shí),比較的是對(duì)象的地址。

以上就是如何區(qū)分JAVA中的equals與==的詳細(xì)內(nèi)容,更多關(guān)于JAVA中的equals與==的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 欧美一级特黄乱妇高清视频 | 成人午夜视频免费观看 | 久久久视频在线 | 高清在线一区二区三区亚洲综合 | 成人免费看www网址入口 | 亚洲黄色小视频 | 男女上下爽无遮挡午夜免费视频 | 免费 成年人| 国产日韩精品欧美一区 | 久久久999国产精品 久久久99精品免费观看 | 91高端极品外围在线观看 | 成年午夜 | 男女免费爽爽爽在线视频 | 日韩欧美精品综合一区二区三区 | 亚洲国产亚洲片在线观看播放 | 99综合在线 | 久久国产免费观看精品3 | 午夜三级理论在线观看视频 | 成人国产精品视频 | 亚洲欧美综合久久 | 97在线碰碰观看免费高清 | 美女张开腿让我 | 亚洲欧美一区二区三区在饯 | 新婚第一次一级毛片 | 欧美一级毛片免费观看 | 亚洲精品久一区 | 在线观看视频亚洲 | 国产成人aaa在线视频免费观看 | 女人毛片a毛片久久人人 | 碰碰久久| 国产网站精品 | 精品性久久 | 和老外3p爽粗大免费视频 | 亚洲成a人片 | 久久精品视频8 | 香蕉久久夜色精品国产尤物 | 萌白酱香蕉白丝护士服喷浆 | 国产成人免费网站 | 成人亚洲欧美 | 成人一级黄色毛片 | 欧美在线观看成人高清视频 |