问题起源于:
然而,当使用+时:
出现这个问题的原因是:myArray
是一个字符数组,而 s
是一个字符串。当使用 +
运算符将它们连接在一起时, Java 会将 myArray
的地址和 s
字符串连接在一起,并返回一个新的字符串。因此,打印结果是 myArray
的地址加上 hello world
。
那是不是打印任何数组,都会以串的形式打印出来呢?
通过尝试发现:
只有字符数组在打印数组名字的时候,会打印全部内容,而int、double等都不可以。
原因是:
当打印字符数组时,会调用writeln,将char[]全部打印。
但是对于int[]数组
由于没有自己的toString方法,它会调用object类的toString方法,因此
System.out.println(arr1);
//等价于
System.out.println(String.valueOf(arr1))
但是由于int[]类型的数组对象没有重写toString()方法,所以它将使用默认的toString()方法来返回一个包含对象的类名和哈希码值的字符串,而不是数组元素连接起来的字符串。
注意:
valueOf本质就是进行toString()方法