当前位置: 首页 > 知识库问答 >
问题:

如何比较Java中的int数组?[副本]

武友樵
2023-03-14

当我试图比较两个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");
}

共有1个答案

司徒胤
2023-03-14

这里需要注意几件事:

  • ==比较引用,而不是值。.。也就是说,您要问的是这两个数组是否是相同的实例,而不是它们是否包含相同的值。
  • 您正在使用==这一事实意味着您可能不知道对象上的equals()方法。这不是解决当前问题所需的方法,但请注意,一般来说,在比较两个对象的值时,应该使用obj1.equals(obj2),而不是obj1==obj2。现在==确实可以处理像int这样的原语(例如,plain oldx==3等等),所以也许这就是您使用它的原因,但我只是想确保您知道equals()==.
  • 在过去(1998年以前),您必须比较两个数组的每个元素对。现在,您可以在java.util.Arrays类上使用静态arrays.equals()方法。此方法重载于所有基元类型(对每个元素对使用==)和Object(其中它将对每个元素对使用equals())。
 类似资料:
  • 以及为什么我在这个中得到..

  • 我想将数组长度与一些int值进行比较。我可以用if(如果)if(如果)else(如果),但如何用switch(切换),因为switch(切换)很快,我想在我的项目中使用它 如果有

  • 我正在尝试编写一个日历。我将我的约会保存在另一个ArrayList中的两个不同的ArrayList中。 字符串(Subject,Place,People)进入另一个ArrayList=arstr中的第一个ArrayList 整数(Date和Time)进入另一个ArrayList=arInt中的第二个ArrayList 当我创建约会时,我希望根据日期对其进行排序。所以如果我想添加一个新的约会,它应该

  • 问题内容: 我不知道为什么所有人都打印错误。 当我运行“ java ByteArray”时,答案是“ false false false false”。 我认为a []等于b [],但是JVM告诉我我错了,为什么?? 问题答案: 如果要比较包含基本类型值(例如字节)的数组的实际内容,请使用此选项。 使用了包含对象数组的比较。

  • 问题内容: 为什么m和t都是假的?比较Java中2个数组的正确方法是什么? 问题答案: 使用Arrays.equals方法。例:

  • 问题内容: 在Java中工作,假设我有两个对象,这要归功于,我知道它们都是数组。进一步说,我想将这两个数组相互比较- 可能使用。有没有一种优雅的方法可以做到这一点,而无需借助详尽的if / else树来弄清楚需要使用哪种口味?我正在寻找比这更令人讨厌的东西: 问题答案: 您可以使用反射。 反射仅用于在运行时找到正确的方法,而不会引起您的回避。实际方法应该运行得很快。 显然,生产版本需要更强大的异常