Java中==符號(hào)與equals()的使用詳解(測(cè)試兩個(gè)變量是否相等)
Java 程序中測(cè)試兩個(gè)變量是否相等有兩種方式:一種是利用 == 運(yùn)算符,另一種是利用equals()方法。
當(dāng)使用 == 來(lái)判斷兩個(gè)變量是否相等時(shí),如果兩個(gè)變量是基本類(lèi)型變量,且都是數(shù)值類(lèi)型(不一定要求數(shù)據(jù)類(lèi)型嚴(yán)格相同),則只要兩個(gè)變量的值相等,就返回true。
但是對(duì)于兩個(gè)引用類(lèi)型變量,只有它們指向同一個(gè)對(duì)象時(shí), == 判斷才會(huì)返回true。 == 不可用于比較類(lèi)型上沒(méi)有父子關(guān)系的兩個(gè)對(duì)象。
很多書(shū)上說(shuō)equals()方法是判斷兩個(gè)對(duì)象的值相等。這種說(shuō)法不準(zhǔn)確。實(shí)際上equals()方法是Object類(lèi)提供的一個(gè)實(shí)例方法,因此所有的引用變量都可以調(diào)用該方法來(lái)判斷是否與其它引用變量相等。但是使用這個(gè)方法判斷兩個(gè)對(duì)象相等的標(biāo)準(zhǔn)與使用 == 運(yùn)算符沒(méi)有區(qū)別,同樣要求兩個(gè)變量指向同一個(gè)對(duì)象才會(huì)返回true。因此這個(gè)Object類(lèi)提供的equals()方法沒(méi)有太大的實(shí)際意義,如果希望采用自定義的相等標(biāo)準(zhǔn),則可采用重寫(xiě)equals方法來(lái)實(shí)現(xiàn)。
String已經(jīng)重寫(xiě)了Object的equals()方法,String 的equals()方法判斷兩個(gè)字符串相等的標(biāo)準(zhǔn)是:只要兩個(gè)字符串所包含的字符序列相同,通過(guò)equals()比較將返回true,否則返回 false。
如下列程序所示:
public class EqualTest { public static void main(String[] args) { int num1 = 65; float num2 = 65.0f; //將輸出true System.out.println("65和65.0f是否相等?"+(num1==num2)); char ch = 'A'; //將輸出true System.out.println("65和‘A'是否相等?"+(num1==ch)); String str1 = new String("hello"); String str2 = new String("hello"); //將輸出false System.out.println("str1和str2是否相等?"+(str1==str2)); //將輸出true System.out.println("str1和str2是否相等?"+str1.equals(str2)); } }
程序運(yùn)行結(jié)果如圖:
以上這篇Java中==符號(hào)與equals()的使用詳解(測(cè)試兩個(gè)變量是否相等)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java使用設(shè)計(jì)模式中迭代器模式構(gòu)建項(xiàng)目的代碼結(jié)構(gòu)示例
這篇文章主要介紹了Java使用設(shè)計(jì)模式中迭代器模式構(gòu)建項(xiàng)目的代碼結(jié)構(gòu)示例,迭代器模式能夠?qū)υL問(wèn)者隱藏對(duì)象的內(nèi)部細(xì)節(jié),需要的朋友可以參考下2016-05-05Java中的日期時(shí)間類(lèi)實(shí)例詳解(Date、Calendar、DateFormat)
在JDK1.0中,Date類(lèi)是唯一的一個(gè)代表時(shí)間的類(lèi),但是由于Date類(lèi)不便于實(shí)現(xiàn)國(guó)際化,所以從JDK1.1版本開(kāi)始,推薦使用Calendar類(lèi)進(jìn)行時(shí)間和日期處理,這篇文章主要介紹了Java中的日期時(shí)間類(lèi)詳解(Date、Calendar、DateFormat),需要的朋友可以參考下2023-11-11Java算法練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(2)
方法下面小編就為大家?guī)?lái)一篇Java算法的一道練習(xí)題(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,希望可以幫到你2021-07-07Spring中Bean的創(chuàng)建流程詳細(xì)解讀
這篇文章主要介紹了Spring中Bean的創(chuàng)建流程詳細(xì)解讀,Spring 中創(chuàng)建 Bean ,是通過(guò)調(diào)用 GetBean 方法來(lái)觸發(fā)的,所以,我們會(huì)從這個(gè)方法開(kāi)始,需要的朋友可以參考下2023-10-10詳解Spring Cloud Netflix Zuul中的速率限制
這篇文章主要介紹了詳解Spring Cloud Netflix Zuul中的速率限制,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-11-11Java動(dòng)態(tài)數(shù)組Arraylist存放自定義數(shù)據(jù)類(lèi)型方式
這篇文章主要介紹了Java動(dòng)態(tài)數(shù)組Arraylist存放自定義數(shù)據(jù)類(lèi)型方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10