在java中,当使用new关键字创建对象时,每次都会重新分配一块内存空间来存放该对象,所以即使我们使用相同的参数创建两个对象,他们所在的内存地址也是不同的,因此,这两个对象并不相等。
例如,考虑下面的示例代码:
String str1 = new String("Hello"); String str2 = new String("Hello");
这里我们使用new关键字分别创建两个字符串对象str1,str2,并且它们所包含的字符串内容都相同。但是,由于两个对象在内存中分配的地址不同,他们并不相等,也就是str1 == str2的结果为false。
如果我们想要比较两个对象是否相等,应该使用equals()方法,因为equals()方法比较的是两个对象中的内容是否相同,而不是他们在内存中的地址是否相同。例如,对于上述示例,str1.equals(str2)的结果为true。
需要注意的是,如果我们没有在类中重写equals()方法,则默认情况下会比较两个对象的内存地址值是否相同。因此,如果我们要在自定义类中比较两个对象是否相等,需要覆盖equals()方法并根据需要自定义比较规则。