请看看这个问题为什么这不起作用:equals vs Arrays.equals in Java 本质上,你是在比较数组的内存地址。java.util.Arrays.equals方法将比较长度是否相同,每个对象equals方法将返回值true。由于string equals方法比较字符,那么它们将返回true,这将给予你想要的结果。 如果继续并将其更改为对象数组,则它将取决于类如何实现equals方法;如果将实现保留为默认值,则它将仅比较内存地址(使用==),如果它们不是相同的引用,则返回false。
2条答案
按热度按时间hivapdat1#
在比较字符串时使用
.equals()
是正确的,但是当你在两个String[]
上使用该方法时,你就真的回到了比较对象引用的问题。如果你想比较两个String数组的内容,那么你可以使用Arrays.equals(Object[] a1,Object[] a2)
。文档在这里,但基本上是比较每个数组的长度,然后确保它们包含相同的项。最后,你的代码会变成这样:
nhjlsmyf2#
请看看这个问题为什么这不起作用:equals vs Arrays.equals in Java
本质上,你是在比较数组的内存地址。
java.util.Arrays.equals
方法将比较长度是否相同,每个对象equals
方法将返回值true。由于stringequals
方法比较字符,那么它们将返回true,这将给予你想要的结果。如果继续并将其更改为对象数组,则它将取决于类如何实现
equals
方法;如果将实现保留为默认值,则它将仅比较内存地址(使用==
),如果它们不是相同的引用,则返回false。