從Java數據類型的區別可以得出答案。
==:
Java 基礎數據類型:
名稱 | 類型 | 所佔空間大小(單位:byte) |
float | 點浮型 | 4 |
double | - | 8 |
byte | 整型 | 1 |
short | - | 2 |
int | - | 4 |
long | - | 8 |
char | 字符型 | 2 |
boolean | 布爾型 | 未規定空間大小,只能去字面值“ture”或“false” |
以上數據類型,變量直接存儲的是“值”,使用“==”進行比較時,對比的是"值"本身。
如:
int i=3;
int j=3;
“i==j”對比的是“3”這個值,所以結果爲true。
對於Java非基礎數據類型,變量存儲的不是“值”而是關聯其對象的“地址”。
如:
String s1 = new String("string");
String s2 = new String("string");
System.out.print(s1==s2);
以上結果爲false,因爲s1和s2擁有不同的地址。
.equals():
在Object類中,equals()是用來比較兩個對象的引用是否相等,即是否指向同一個對象。
###
在String類中,equals()對比的是其儲存的字符串的值。
除了String以外,Double,Date,Integer等,都與String類似。
總結:
對於“==”,如果作用於基本數據類型的變量,則比較的是他們的值。
如果作用於引用類型的變量,則比較的是他們的地址。
對於“equals()”,首先,它不可以作用於基本數據類型的變量。
如果沒有進行重寫,則默認對比他們的地址。
否則對比他們的值。(如String等。)