对于String.valueOf(),Arrays.toString()与a.toString()来说,都有着细微的差别。
对于以下代码:
输出结果是:
我们结合源码来看这三者:
对于Object类的toString()方法:
显然除去String类重写了这个方法外,对于这个字符数组并未手动重写toString(),所以输出的是全路径名称+"@"+hashCode的十六进制表示。
对于Arrays.toString():
Arrays.valueOf()用StringBuilder的append()方法将字符数组的元素拼接,并以逗号间隔,整体用中括号包围。这是源码的规定,所以和String.valueOf()的结果有区别.
对于String.valueOf():
它调用了String的构造器new了一个新的String对象,所以输出的是一个由字符数组元素组成的全新的字符串。