Java数组中char和String的区别

10

在创建一些数组时,我注意到

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

打印输出

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

只打印堆栈位置。我知道char和String非常不同,但JVM如何知道要为第一个输出chars而仅为第二个输出堆栈位置?

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


2
char[] javaArray = {'j','a','v','a'} 这段代码在哪里打印出 java - ernest_k
3
你现在打印的情况如何? - Amit Bera
与其在结尾处添加println的重要细节,不如将其放在开头显著位置。 - jpmc26
1个回答

16
这是因为PrintStream对于char[]有一个特殊的覆盖,但它缺少对于String[]和其他数组类型的这样的覆盖: PrintStream.println(char[] x) 如果在打印时调用javaArraytoString(),结果会类似于打印String[]的结果:
char[] javaArray = {'j','a','v','a'};
System.out.println(javaArray.toString()); // Prints something like [C@1540e19d

3
不知道这个存在...! - ernest_k
3
我也不知道 - 结果让我感到惊讶,所以我不得不查一下。 - Sergey Kalinichenko
好的解释! - Yohan Malshika

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接