java的equals和==的比較示例
先看例子:
package com.amos;
/**
* @ClassName: EqualTest
* @Description:Java中的equal和==的比較
* @author: amosli
*/
public class EqualTest {
public static void main(String[] args) {
int a = 1;
float b = 1.0f;
System.out.println(a == b);// true
String c = new String("hi_amos");
String d = new String("hi_amos");
System.out.println(c == d);// false
System.out.println(c.equals(d));// true
}
}
Java中判斷兩個(gè)變量是否相等主要有兩種判方式:一種是利用==運(yùn)算符,另一種是利用equals方法來(lái)判斷兩者是否相同.
1).當(dāng)使用==來(lái)判斷兩個(gè)變量是否相等時(shí),如果兩個(gè)變量是基本類型變量,且都是數(shù)值類型,不要求數(shù)據(jù)類型嚴(yán)格相同,只要兩個(gè)變量的值相等,那么將返回true.
2).如果對(duì)于兩個(gè)引用類型變量,它們必須指向一個(gè)對(duì)象時(shí),==判斷才會(huì)返回true.==不可用于比較類型上沒有父子關(guān)系的兩個(gè)對(duì)象.
如上可以解釋同樣一new String時(shí),==判斷兩者是否相同返回的是false,而equals返回的是true.
equals方法針對(duì)的String類,查看其源碼,可以發(fā)現(xiàn)其實(shí)equals只能算是==的一種特例.如下面源碼所示:
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String) anObject;
int n = value.length;
if (n == anotherString.value.length) {
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;
}
equals方法實(shí)際上一開始就調(diào)用了==判別式,然后再判斷其進(jìn)一步值是否正確
相關(guān)文章
java通過(guò)Arrays.sort(int[] a)實(shí)現(xiàn)由大到小排序的方法實(shí)現(xiàn)
Java中的Arrays.sort()方法是一種內(nèi)置的排序方法,用于對(duì)數(shù)組進(jìn)行排序,本文就來(lái)介紹一下java中的Arrays.sort()排序方法的用法,具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12
Springboot2以代碼的方式統(tǒng)一配置Jackson教程
這篇文章主要介紹了Springboot2以代碼的方式統(tǒng)一配置Jackson教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
Java超詳細(xì)講解設(shè)計(jì)模式之一的工廠模式
工廠模式有 3 種不同的實(shí)現(xiàn)方式,分別是簡(jiǎn)單工廠模式、工廠方法模式和抽象工廠模式,工廠模式最大的特點(diǎn)就是解耦合,本篇帶你詳細(xì)了解它2022-03-03
Java?AQS?線程安全同步隊(duì)列的實(shí)現(xiàn)
AQS 同步隊(duì)列是很多的 Java 線程安全對(duì)象的實(shí)現(xiàn),例如 ReentrantLock, Semaphore, CountDownLatch, ReentrantReadWriteLock 等等,本文就介紹了Java?AQS?線程安全同步隊(duì)列的實(shí)現(xiàn),感興趣的可以了解一下2023-08-08
SpringBoot 利用MultipartFile上傳本地圖片生成圖片鏈接的實(shí)現(xiàn)方法
這篇文章主要介紹了SpringBoot 利用MultipartFile上傳本地圖片生成圖片鏈接的實(shí)現(xiàn)方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
Spring?Boot整合log4j2日志配置的詳細(xì)教程
這篇文章主要介紹了SpringBoot項(xiàng)目中整合Log4j2日志框架的步驟和配置,包括常用日志框架的比較、配置參數(shù)介紹、Log4j2配置詳解以及使用步驟,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-02-02
Java之HashMap.values()轉(zhuǎn)List時(shí)的錯(cuò)誤和正確演示
這篇文章主要介紹了Java之HashMap.values()轉(zhuǎn)List時(shí)的錯(cuò)誤和正確演示,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03

