Cla*_*ake 10 java arrays string char
在编写一些数组时,我注意到了这一点
char[] javaArray = {'j','a','v','a'};
Run Code Online (Sandbox Code Playgroud)
打印出来
java
Run Code Online (Sandbox Code Playgroud)
但
String[] javaStringArray = {"j","a","v","a"};
Run Code Online (Sandbox Code Playgroud)
仅打印堆栈位置.我知道char和String都是非常不同的,但是为什么JVM知道为第一个输出字符而第二个只有一个堆栈位置?
我正在使用IntelliJ和命令 System.out.println(javaArray);
das*_*ght 16
发生这种情况是因为它PrintStream有一个特殊的覆盖char[],但它缺少对String[]其他数组类型的覆盖:
如果你调用toString()上javaArray打印时,结果将类似于你得到什么,当你打印String[]:
char[] javaArray = {'j','a','v','a'};
System.out.println(javaArray.toString()); // Prints something like [C@1540e19d
Run Code Online (Sandbox Code Playgroud)