当前位置: 首页 > 面试题库 >

Java:如何测试数组相等性?

李捷
2023-03-14
问题内容

为什么下面的代码打印"Different."

boolean[][] a = { {false,true}, {true,false} };
boolean[][] b = { {false,true}, {true,false} };

if (Arrays.equals(a, b) || a == b)
    System.out.println("Equal.");
else
    System.out.println("Different.");

问题答案:

为什么下面的代码打印"Different."

因为Arrays.equals执行比较
。由于数组equals从中继承其-method Object,将对内部数组执行同一性比较,这将失败,因为ab均未引用 相同的
数组。

如果更改为Arrays.deepEquals它将"Equal."按预期打印。



 类似资料:
  • 问题内容: 上面的代码给出的输出运行时,但是,如果我们改变的值,并以1000的输出变为。在为SCJP进行准备时,需要弄清楚这个概念。有人可以解释这种行为。谢谢。 问题答案: 在Java中,-128至127(含)之间的整数通常由相同的Integer对象实例表示。这可以通过使用称为IntegerCache的内部类(包含在Integer类中,并在例如调用Integer.valueOf()时或在自动装箱期

  • 问题内容: 假设我有一个单元测试,想要比较两个复数对象是否相等。这些对象包含许多其他深层嵌套的对象。所有对象的类都有正确定义的方法。 这并不困难: 麻烦的是,如果对象不相等,那么您得到的只是一个失败,没有迹象表明对象图的哪一部分不匹配。调试它可能会很痛苦且令人沮丧。 我当前的方法是确保一切都实现了,然后像这样比较相等性: 由于像Eclipse这样的IDE具有一个特殊的可视化比较器,用于显示失败测试

  • 问题内容: 为什么以下失败? 什么是正确的测试方法? 问题答案: 对于 Expect ,将比较对象而不是它们的数据,在您的情况下,它是两个不同的数组。 使用以深深的比较值。查看此链接。 或者您可以使用来模拟与。 或者,您可能要检查一下 。 对于 声称 可以使用,链接。

  • 编者按:此代码示例来自Rust 1.0之前的版本,并且在语法上是无效的Rust 1.0代码。此代码的更新版本会产生不同的错误,但答案仍然包含有价值的信息。 在下面的例子中,我们似乎无法测试平等性。为什么会这样?有解决办法吗?(我使用的是Rust 0.11)。

  • 问题内容: 我有两个数组列表。 如何在不使用外部库的情况下轻松地将它们 与Java 8及其功能的 相等性进行比较?我正在寻找一种比这种强力代码(未经测试的代码,可能包含错别字等)更好的(更高级别,更短,更有效)的解决方案: 或者,如果没有更好的方法,那也是一个有效的答案。 好处:如果Java 9提供了Java 8可以提供的更好的方法,请随时提一下。 编辑: 在查看评论并查看此问题如何变得中等热点之

  • 问题内容: 我想测试两个Swift枚举值的相等性。例如: 但是,编译器不会编译相等表达式: 我是否定义了自己的等于运算符的重载?我希望Swift编译器能够自动处理它,就像Scala和Ocaml一样。 问题答案: 正如@jedwid有用地指出的那样,从Swift 4.1开始(由于SE-0185,Swift还支持合成以及具有关联值的枚举。 因此,如果您使用的是Swift 4.1或更高版本,则以下内容将