当我尝试比较两个 int 数组时,即使它们完全相同,里面的代码if (one == two)仍然没有被执行。为什么是这样?
Object[] one = {1,2,3,4,5,6,7,8,9};
Object[] two = {1,2,3,4,5,6,7,8,9};
if (one == two){
System.out.println("equal");
} else {
System.out.println("not equal");
}
Run Code Online (Sandbox Code Playgroud)
这里有几点需要注意:
==比较引用,而不是值。. . 也就是说,您要问这两个数组是否是同一个完全相同的实例,而不是它们是否包含相同的值。==意味着您可能不了解 上的equals()方法Object。这不是解决当前问题所需的方法,但请注意,一般而言,当您比较两个对象的值时,应该使用obj1.equals(obj2),而不是obj1 == obj2。现在== 确实可以使用像int(例如普通旧x == 3等)这样的原语,所以也许这就是您使用它的原因,但我只是想确保您知道equals()vs. ==.Arrays.equals()在java.util.Arrays类上使用该静态方法。对于所有原始类型(==在幕后为每个元素对使用)和用于Object(它肯定会equals()用于每对元素的地方),该方法都被重载了。| 归档时间: |
|
| 查看次数: |
3888 次 |
| 最近记录: |