在组成一些数组时,我注意到了
char[] javaArray = {'j','a','v','a'};
打印出
java
但是
String[] javaStringArray = {"j","a","v","a"};
仅打印堆栈位置。我知道char和String都非常不同,但是JVM怎么知道第一个输出chars,第二个只输出栈位置?
我正在使用IntelliJ和命令System.out.println(javaArray);
答案 0 :(得分:16)
之所以会这样,是因为PrintStream
对char[]
有一个特殊的替代,但是对String[]
和其他数组类型却没有这样的替代:
如果在打印时在toString()
上调用javaArray
,结果将类似于打印String[]
时得到的结果:
char[] javaArray = {'j','a','v','a'};
System.out.println(javaArray.toString()); // Prints something like [C@1540e19d