Java 如何实现对象之间的相等?
例如,如果我们使用不同的声明语句创建3个int类型的变量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
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
的相同实例