java.lang.Class和相等

前端之家收集整理的这篇文章主要介绍了java.lang.Class和相等前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
根据类的 javadoc

Every array also belongs to a class that is reflected as a Class
object that is shared by all arrays with the same element type and
number of dimensions.

但是当我跑下面的时候

int[] intArray = { 1,2 };
out.println(intArray.getClass().hashCode());
int[] int2Array = { 1,2 };
out.println(int2Array.getClass().hashCode());

out.println(intArray.equals(int2Array));@H_404_11@ 
 

我得到以下输出

1641745
1641745
false@H_404_11@ 
 

我想知道为什么equals返回false,即使这两个数组都是int类型并具有相同的维度.

解决方法

这是因为您在数组实例上调用equals()而不是它们的Class对象.尝试:
out.println(intArray.getClass().equals(int2Array.getClass())); //prints true@H_404_11@ 
 

你也可以这样写:

out.println(int[].class.equals(int[].class)); //prints true thankfully@H_404_11@ 
 

另外,匹配的哈希码并不一定表示相等,尽管这并不重要.

原文链接:https://www.f2er.com/java/128160.html

猜你在找的Java相关文章