char bc[] = {'a','b'};
System.out.println(bc);
System.out.println("----------------");
int[] arr = {1,2,3,4};
System.out.println(arr);
System.out.println("----------------");
String[] st ={"abcd","sdhkkhd"};
System.out.println(st);Console输出:
ab
----------------
[I@3f363271
----------------
[Ljava.lang.String;@7f29b922
这是什么原因???
System.out.println(bc);
System.out.println("----------------");
int[] arr = {1,2,3,4};
System.out.println(arr);
System.out.println("----------------");
String[] st ={"abcd","sdhkkhd"};
System.out.println(st);Console输出:
ab
----------------
[I@3f363271
----------------
[Ljava.lang.String;@7f29b922
这是什么原因???
也就是说楼主System.out.println(bc);这句可以拆为System.out.print(bc);
System.out.println();而System.out.println(arr);这句可以拆为System.out.print(String.valueOf(arr));
System.out.println();再看下面的api文档
这样一来,System.out.println(arr);就可以写成System.out.print(arr==null?null:arr.toString());
System.out.println();而Object.toString()的api文档如下
这样就能解释为什么String[]和int[]显示数组的hashcode了
那么问题来了,为什么System.out.print(bc);这句不用调用String.valueOf()呢?看了下面的api文档就明白了
也就是说System.out.print(bc);是将字符一个一个地写入System.out流