1)对于==,如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;如果作用于引用类型的变量,则比较的是所指向的对象的地址。
2)对于equals方法,equals方法是Object的,所有继承了Object类的类都有该方法,注意:equals方法不能作用于基本数据类型的变量
祖宗类Object中的equals方法比较的是两个对象地址是否相等,即是否为同一个对象,但一些类对该方法进行了重写,如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;
诸如String、Date、基本数据类型的封装类等类对equals方法进行了重写的话,比较的是所指向的对象的内容。(至于还有没有及其他类重写了equals方法还需读者自己去发现)
代码示例:
public class Demo1 {
public static void main(String[] args) {
Integer a = 299;//当要赋的值在[-128~127]范围内,则会直接指向该值的引用,不用去new 个对象到堆内存中去了。因为 Integer已经缓存了数据。
Integer b = 299;
System.out.println("a.equals(b) " + a.equals(b));
System.out.println("a==b " + (a==b));
Integer a1 = 2;
Integer b1 = 2;
System.out.println("a1.equals(b1) "+a1.equals(b1));
System.out.println("a1==b1 " +(a1==b1));
String str = "b";
String c = "aaa" + str;
String d = "aaab";
System.out.println("c.equals(d) " +c.equals(d));
System.out.println("c==d " +(c==d));
}
}
运行结果:
a.equals(b) true
a == b false
a1.equals(b1) true
a1 == b1 true
c.equals(d) true
c == d false
如有不足还请各位大神多多指教
作者:爱捡贝壳的小男孩
版权声明:本文为博主原创文章,转载请附上博文链接!