Java中==符號(hào)與equals()的使用詳解(測(cè)試兩個(gè)變量是否相等)
Java 程序中測(cè)試兩個(gè)變量是否相等有兩種方式:一種是利用 == 運(yùn)算符,另一種是利用equals()方法。
當(dāng)使用 == 來判斷兩個(gè)變量是否相等時(shí),如果兩個(gè)變量是基本類型變量,且都是數(shù)值類型(不一定要求數(shù)據(jù)類型嚴(yán)格相同),則只要兩個(gè)變量的值相等,就返回true。
但是對(duì)于兩個(gè)引用類型變量,只有它們指向同一個(gè)對(duì)象時(shí), == 判斷才會(huì)返回true。 == 不可用于比較類型上沒有父子關(guān)系的兩個(gè)對(duì)象。
很多書上說equals()方法是判斷兩個(gè)對(duì)象的值相等。這種說法不準(zhǔn)確。實(shí)際上equals()方法是Object類提供的一個(gè)實(shí)例方法,因此所有的引用變量都可以調(diào)用該方法來判斷是否與其它引用變量相等。但是使用這個(gè)方法判斷兩個(gè)對(duì)象相等的標(biāo)準(zhǔn)與使用 == 運(yùn)算符沒有區(qū)別,同樣要求兩個(gè)變量指向同一個(gè)對(duì)象才會(huì)返回true。因此這個(gè)Object類提供的equals()方法沒有太大的實(shí)際意義,如果希望采用自定義的相等標(biāo)準(zhǔn),則可采用重寫equals方法來實(shí)現(xiàn)。
String已經(jīng)重寫了Object的equals()方法,String 的equals()方法判斷兩個(gè)字符串相等的標(biāo)準(zhǔn)是:只要兩個(gè)字符串所包含的字符序列相同,通過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)文章
SpringBoot自動(dòng)配置與啟動(dòng)流程詳細(xì)分析
這篇文章主要介紹了SpringBoot自動(dòng)配置原理分析,SpringBoot是我們經(jīng)常使用的框架,那么你能不能針對(duì)SpringBoot實(shí)現(xiàn)自動(dòng)配置做一個(gè)詳細(xì)的介紹。如果可以的話,能不能畫一下實(shí)現(xiàn)自動(dòng)配置的流程圖。牽扯到哪些關(guān)鍵類,以及哪些關(guān)鍵點(diǎn)2022-11-11
解決springboot+shiro+thymeleaf頁面級(jí)元素的權(quán)限控制問題
這篇文章主要介紹了解決springboot+shiro+thymeleaf頁面級(jí)元素的權(quán)限控制問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01
SpringCloud學(xué)習(xí)筆記之Feign遠(yuǎn)程調(diào)用
Feign是一個(gè)聲明式的http客戶端。其作用就是幫助我們優(yōu)雅的實(shí)現(xiàn)http請(qǐng)求的發(fā)送。本文將具體為大家介紹一下Feign的遠(yuǎn)程調(diào)用,感興趣的可以了解一下2021-12-12

