int[] nums = {1,2,3,4,5,6};
System.out.println(nums);
System.out.println(Arrays.toString(nums));
打印一个数组,这两句结果为什么不同呢?
因为数据是引用类型啊,打印一个对象默认调用的是其toString()方法,查看Object.toString()方法发现默认调用的是hashCode方法。你可能有疑问Integer,Long之类的不也是引用类型么,为什么我们打印的时候还是其真实值?这是因为他们重写了Object中的toString。java为常用的类都重写了toString,例如我们常见的类都重写了toString,这就是为什么我们直接打印一个set集合或者一个list得到的不是hash码的原因。Arrays.toString()有很多重载的方法,查看Arrays.toString()源码就知道它实际上是输出遍历数组并用中括号将内容包裹起来