从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等。)