Java 如何实现对象之间的相等?

Java 如何实现对象之间的相等?,java,types,Java,Types,例如,如果我们使用不同的声明语句创建3个int类型的变量 Integer i = 10; Integer j = new Integer(10); int k = 10; 我们比较它们是否相等,得到i==k和j==k,但不是i==j 这是什么原因?因为k是基本的,当您将其与其他对象进行比较时,您只会比较其整数值。但其他两个是对象。当您将它们与==运算符进行比较时,您只需检查它们是否为同一对象 您应该使用equals()方法来比较Integer对象。以下内容将在程序中返回true i.equ

例如,如果我们使用不同的声明语句创建3个int类型的变量

Integer i = 10; 
Integer j = new Integer(10); 
int k = 10;
我们比较它们是否相等,得到
i==k
j==k
,但不是
i==j


这是什么原因?

因为
k
是基本的,当您将其与其他对象进行比较时,您只会比较其整数值。但其他两个是对象。当您将它们与
==
运算符进行比较时,您只需检查它们是否为同一对象

您应该使用
equals()
方法来比较
Integer
对象。以下内容将在程序中返回
true

i.equals(j);

因为
k
是原语,当你把它和其他的比较时,你只比较它的整数值,而另外两个是对象。当您将它们与
==
运算符进行比较时,您只需检查它们是否为同一对象

您应该使用
equals()
方法来比较
Integer
对象。以下内容将在程序中返回
true

i.equals(j);

由于
i
具有类型
Integer
k
具有类型
int
,表达式
i==k
触发:它相当于
i.intValue()==k
(甚至在
i
为null时它会引发
NullPointerException
)。类似地,对于
j==k
。但是由于
i
j
都具有类型
Integer
,因此不会执行自动取消装箱,因此
i==j
只需检查它们是否是相同的对象-
Integer
的相同实例,因为
i
具有类型
Integer
k
具有类型
int
,表达式
i==k
触发:它相当于
i.intValue()==k
(甚至在
i
为null时会引发
NullPointerException
)。类似地,对于
j==k
。但是由于
i
j
都具有类型
Integer
,因此不会执行自动取消装箱,因此
i==j
只需检查它们是否是相同的对象-
Integer
的相同实例