Enz*_*zio 0 java equality class equals object
public class Test {
public static void main(String[] args) {
Object o1 = new Object();
Object o2 = new Object();
System.out.print((o1 == o2) + " " + (o1.equals(o2)));
}
}
Run Code Online (Sandbox Code Playgroud)
我以不同的答案阅读:
该
==运营商测试两个变量是否具有相同的引用(又名指向一个内存地址)。而该
equals()方法测试两个变量是否引用具有相同状态(值)的对象。
在这里,由于 o1和o2引用了两个不同的对象,我得到了为什么 ==返回false。
但是,这两个对象都是使用Object该类的默认构造函数创建的,因此具有相同的值。为什么该equals()方法返回false?
执行equals()由供给java.lang.Object被定义返回false,除非引用指的是同一个对象,在这种情况下它返回true。
这是由设计(的方法模仿行为==),并鼓励程序员实现自己的版本equals(),如果合适的话,他们的class。例如,如果将另一个作为参数传递,请查看java.lang.String#equals哪个比较内容String。