Java中整型數值 和equals的處理

2021-08-29 02:03:02 字數 1192 閱讀 2935

前言

equals 比較內容, == 比較位址。

ps.equals在object類中,作用和==完全是一樣的,都是對物件位址的比較,不是比較值。

在string類中,equals被重寫成了字串的具體值的比較,而不再是位址比較。

==:

1)基本型別之間互相比較:值進行比較。

比如:return 5==6;

返回false

ps.

byte n1 = 5;

short n2 = 129;

return n1 == n2;

返回false,n1會隱式轉為short,低階向高階是隱式型別轉換,高階向低階必須強制型別轉換,byte

2)一邊是基本型別,一邊是包裝型別:

同型別的進行比較,如integer 與int,long與long進行==比較時,會自動拆箱。

比如:int a = 220;

integer b = 220;

system.out.println(a==b);//true

不同型別之間進行比較,如果有一方為非包裝類,則會自動拆箱,且會進行自動向上轉型。

比如:int a = 220;

short b = 220;

system.out.println(a==b);//true

3)兩邊都是包裝型別:

如果兩邊是同型別的包裝類,比較位址。

如果兩個都是new出來的物件,直接為false,如果是常量賦值,會引用存在的快取物件,關於包裝型別的;如果兩快取機制,請自行了解;

如果為不同包裝類,則不會拆箱,且不能比較,編譯會報錯。

equals():

先比較型別,再比較值

equals可以用來比較字串以及引用型別是否相等;但無法比較值型別,如整形int,double

1)基本型別之間互相比較:無法比較。

2)一邊是基本型別,一邊是包裝型別:

同型別的進行比較,如integer 與int,long與long進行比較時,先會進行自動裝箱,基本型轉換為其封裝型別

不同型別之間無法進行比較。

3)兩邊都是包裝型別:

如果是同型別包裝類的話,直接比較值;

如果是不同型別包裝類,不會進行拆裝箱,不能比較,編譯會報錯。

JAVA基礎 equal和hashcode的區別

面試時被問到了equal和hashcode的區別,在這裡總結一下 equals 是根類obeject 中的方法。源 如下 public boolean equals object obj 可見預設的 equals 方法,直接呼叫 比較物件位址。不同的子類,可以重寫此方法,進行兩個物件的 equals...

java中 與 equal 的區別

看一段 string str1 new string str string str2 new string str system.out.println 比較 str1 str2 system.out.println equal比較 str1.equals str2 結果 比較 false equa...

String中的 和equal()理解

首先要明白有兩種方式來建立字串,第一種string a hello a本身就是乙個物件,他放在字元創常量池中 當你再次以這種方式建立乙個內容相同的字串時候,會在常量池中檢視時候存在 第二種 string b new string hello 此時後兩個物件,乙個new在堆中的 乙個是字串本身在常量池...