1. 性质不同
equals()是方法,基本数据类型是无法调用的
"=="这个是符号, 基本数据类型也可以调用
2. 比较内容不同
1. ==
始终比较的是内存地址
所以会出现以下的比较结果
'a'==97
// true
2. equals
1. 被重写
重写了父类Object 的euqals方法,就是按照重写后的方法进行比较
1. 比较字面量值
比较字面量值 常见的有以下几种
String
String a="a";
String b="a";
a.equals(b)
// true
包装类型
Integer integer1 = 33;
Integer integer2 = new Integer(33);
System.out.println("integer1.equals(integer2) = " + integer1.equals(integer2));
//integer1.equals(integer2) = true
被重写后的方法:
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}
2. 其他
如果有特殊的比较方式,可以自定义equals方法的条件
2.未被重写
person p1=new person();
person p2=new person();
p1.equals(p2)
//false
直接调用父类的Object方法 实际上还是用 "=="
public boolean equals(Object obj) {
return (this == obj);
}
3.使用
1. equals
比较字面量值,要确保equals方法被正确重写
2. ==
比较变量内存地址是否相同,则使用==
3. 注意
int numberA=1;
int numberB=1;
if(numberA == numberB){
.......
}
这个if条件是成立的 -------true 因为numberA numberB是指向同一内存地址