Java数组字符和数组中的字符串差异

时间:2018-06-22 18:28:30

标签: java arrays string char

在组成一些数组时,我注意到了

char[] javaArray = {'j','a','v','a'};

打印出

java

但是

String[] javaStringArray = {"j","a","v","a"};

仅打印堆栈位置。我知道char和String都非常不同,但是JVM怎么知道第一个输出chars,第二个只输出栈位置?

我正在使用IntelliJ和命令System.out.println(javaArray);

1 个答案:

答案 0 :(得分:16)

之所以会这样,是因为PrintStreamchar[]有一个特殊的替代,但是对String[]和其他数组类型却没有这样的替代:

PrintStream.println(char[] x)

如果在打印时在toString()上调用javaArray,结果将类似于打印String[]时得到的结果:

char[] javaArray = {'j','a','v','a'};
System.out.println(javaArray.toString()); // Prints something like [C@1540e19d