1.Object中equals方法的底层实现
- 除Object类外的任何类都直接或间接继承于根父类Object类,如果继承于Object类的子类未重写Object的equals方法,那么我们调用equals方法则是Object类中的equals().
Object类中的equals方法 public boolean equals(Object obj) { return (this == obj); }
- 可以看到,Object类中的equals方法的底层是通过==来实现的.
2.==与equals()的相同与不同
(1). 基本数据类型(如int) : 可以用==判断,二者的数值是否相等
int a = 3; int b = 3; System.out.println(a == b);//打印true
(2). 引用数据类型(如String) : 可以用==判断,二者是否引用同一对象.
String a = new String("小明"); String b = new String("小明"); System.out.println(a == b);//打印false,因为a, b变量引用不同的对象
(3). 因为equals是方法,基本数据类型变量并不是对象,所以不能调用equals方法.
(4). 对于引用数据类型来说,由于equals()的底层是用=等于来实现的,所以并无不同.