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

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[]其他数组类型的覆盖:

PrintStream.println(char[] x)

如果你调用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)

  • 不知道这个存在......! (3认同)
  • @ErnestKiwele我也没有 - 结果让我感到惊讶,所以我不得不查一查. (3认同)