Object、String、数组的 toString() 方法和 equals() 方法及java.util.Arrays

 1 public class Test {
 2     public static void main(String[] args) {
 3         int[] a = {1, 2, 4, 6};
 4         int[] b = a;
 5         int[] c = {1, 2, 4, 6};
 6         
 7         //下面这个方法打印的是a数组的引用地址
 8         System.out.println(a.toString());
 9         //下面这个方法比较的是两个数组的引用是否相等
10         System.out.println("a.equals(b):"+a.equals(b));
11         //下面这个方法才是a数组真正的toString方法       
12         System.out.println(Arrays.toString(a));
13         //下面这个方法才是数组真正的equals方法
14         System.out.println("Arrays.equals(a,c):"+Arrays.equals(a, c));
15     }
16 }
1 [I@33d063fd
2 a.equals(b):true
3 [1, 2, 4, 6]
4 Arrays.equals(a,c):true
运行结果 

 总结:java 数组没有重写 toString 方法和 equals 方法,当我们直接调用一个 java 对象的这两个方法的时候,实际上调用的是 java.lang.Object类里的这两个方法。

   要实现数组类自己的这两个操作必须要通过 java.util.Arrays 类的 toString() 方法和 equals(a , b) 这两个静态方法。

注意:java.lang.Object 这个类的 toString 方法打印出来的是对象的引用地址;equals()方法默认比较的是两个对象的引用。

   JDK中很多类重写了equals()方法,包括Java.lang.String类和java.util.Arrays类。

原文地址:https://www.cnblogs.com/Mike_Chang/p/6618756.html