根据javadoc Class
每个数组也属于一个类,它反映为一个Class对象,由具有相同元素类型和维数的所有数组共享.
但是当我跑下面的时候
int[] intArray = { 1, 2 };
out.println(intArray.getClass().hashCode());
int[] int2Array = { 1, 2 };
out.println(int2Array.getClass().hashCode());
out.println(intArray.equals(int2Array));
Run Code Online (Sandbox Code Playgroud)
我得到以下输出
1641745
1641745
false
Run Code Online (Sandbox Code Playgroud)
我想知道为什么equals返回false,即使两个数组都是int类型并具有相同的维度.
这是因为您正在调用equals()数组实例而不是它们的Class对象.尝试:
out.println(intArray.getClass().equals(int2Array.getClass())); //prints true
Run Code Online (Sandbox Code Playgroud)
你也可以这样写:
out.println(int[].class.equals(int[].class)); //prints true thankfully
Run Code Online (Sandbox Code Playgroud)
另外,匹配的哈希码并不一定表示相等,尽管这并不重要.