版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huoguang_/article/details/90340780
1、== 可以比较引用类型和基本数据类型
(1)如果比较基本数据类型,则直接比较其存储的 “值”是否相等
int a = 1;
int b = 1;
System.out.println(a == b);
结果:true
(2)如果比较引用类型,则比较的是所指向的对象的地址,与equals()相同
//定义一个类
class Name{
String name;
public Name(String name) {
this.name = name;
}
}
Name a = new Name("小明");
Name b = new Name("小明");
System.out.println(a == b);
结果:false,两个对象的地址不同。和equale()相同
2、equals()方法只比较引用类型
//equals()源码
public boolean equals(Object obj) {
return (this == obj);
}
(1)如果没有对equals方法进行重写,比较的是所指向的对象的地址
Name a = new Name("小明");
Name b = new Name("小明");
System.out.println(a.equals(b));
结果:false
(2)String类、File类、包装类等里边对equals()方法进行了重写,比较的是所指向的对象的内容
String a = "小明";
String b = "小明";
System.out.println(a == b);
System.out.println(a.equals(b));
结果:true true