先说==
基础数据类型,使用==比较的是变量的值。比如int a = 13,int b =14;
a==b//两个变量的值不相同,返回false
引用数据类型,即对象,比较的是变量的引用地址(内存地址)。比如User u1 = new User();User u2 = new User();
u1==u2//比较两个变量的引用地址,引用地址不一样,返回false
再说equals
这个方法是Object的方法,也就说所有对象都会继承这个方法。
在Object类中equals方法实现为:
public boolean equals(Object obj){
return (this==obj);
}
可见equals方法实际上也是用的==比较,即比较两个对象的地址是否相等。
但是,有些类重写了父类的equals方法,比如String、Date。这些个类实现equals的时候,比较的是内容是否相等。
总结:
1、基础数据类型 使用==比较的是值是否相等
2、引用数据类型 使用==比较的是内存地址是否相等
3、对于equals,如果类没有重写equals方法,则使用equals和==效果是一致的,即比较内存地址是否相等;
如果类重写了equals方法,则按照方法重写逻辑进行比较。比如String,使用equals比较的就是内容是否相等。