Jam*_*sev 13 equality java-7 deepequals
方法描述说:
如果参数彼此非常相等则返回true,否则返回false ... 等于通过使用第一个参数的equals方法确定.
哪个(对我来说)表明,如果使用equals()方法,它们维护引用的每个对象也相等,则对象非常相等.他们所参考的每个物体也是平等的.并..
那么...... equality is determined by using the equals method of the first argument.
这有什么不同.equals()
?假设我们恰当地描述了equals,对象等于另一个对象,对象的每个字段也等于它.
能否请您提供说明之间的差别的例子Objects.deepEquals()
和Objects.equals()
?
Abd*_*ull 15
String[] firstArray = {"a", "b", "c"};
String[] secondArray = {"a", "b", "c"};
System.out.println("Are they equal 1 ? " + firstArray.equals(secondArray) );
System.out.println("Are they equal 2 ? " + Objects.equals(firstArray, secondArray) );
System.out.println("Are they deepEqual 1? " + Arrays.deepEquals(firstArray, secondArray) );
System.out.println("Are they deepEqual 2? " + Objects.deepEquals(firstArray, secondArray) );
Run Code Online (Sandbox Code Playgroud)
将返回
Are they equal 1 ? false
Are they equal 2 ? false
Are they deepEqual 1? true
Are they deepEqual 2? true
Run Code Online (Sandbox Code Playgroud)
为什么"浅层" equals
方法会回归false
?这是因为在Java中,对于数组,相等性由对象标识决定.在此示例中,firstArray
并且secondArray
是不同的对象.
否则String[] secondArray = firstArray
因此而不是将返回true
所有四个测试.