A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张亚青 中级黑马   /  2013-3-3 23:19  /  2560 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张亚青 于 2013-3-4 09:39 编辑

java中打印int[]数组String[] 数组的时候都是显示的数组地址信息,
但是打印char[]数组名字,不是地址,而是元素?

PS:
代码:
  1. class Test1
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 char [] charArr={'a','b'};
  6.                 System.out.println(charArr);

  7.                 int[] intArr={1,2,3,4};
  8.                 System.out.println(intArr);

  9.                 String[] strArr={"ad","ce"};
  10.                 System.out.println(strArr);
  11.         }
  12. }
复制代码
显示结果为:
ab
[I@4e7a15b
[Ljava.lang.String;@3125fe1

8DW5HPVX]BW7`MW1L``79{G.jpg (4.76 KB, 下载次数: 338)

8DW5HPVX]BW7`MW1L``79{G.jpg

4 个回复

倒序浏览
我觉得可以按下面两点来理解:
1.String.valueOf、StringBuffer.append以及System.out.print中都对char[]数组单独处理,即进行了重载,使之可以输出内容(或者对内容操作处理),而不是地址.
2.System.out.println(charArr);调用的是PrintStream类(System.out对象所属的类)的println(char[])方法;

总结:调用out.println()方法对字符数组名进行打印,与int[]和String[]的处理方式是不一样的..

点评

明白了,谢谢!!!  发表于 2013-3-4 09:38
回复 使用道具 举报
String是一个对象,而对象不等同于字符串或字符数组,之所以会有把字符串赋值给string,是因为string有接受该参数的构造方法,.
而字符数组没有构造函数,仅可以赋值.
回复 使用道具 举报
  1.     public void println(Object x) {
  2.         String s = String.valueOf(x);
  3.         synchronized (this) {
  4.             print(s);
  5.             newLine();
  6.         }
  7.     }
复制代码
这段代码是println()方法的源码,也就是说接受的3个参数在打印的时候全都转成了字符串,然后才打印的
可以看看API里String的valueOf方法
所以就出现了这样的结果
回复 使用道具 举报
我觉得可以按下面两点来理解:
1.String.valueOf、StringBuffer.append以及System.out.print中都对char[]数组单独处理,即进行了重载,使之可以输出内容(或者对内容操作处理),而不是地址.
2.System.out.println(charArr);调用的是PrintStream类(System.out对象所属的类)的println(char[])方法;

总结:调用out.println()方法对字符数组名进行打印,与int[]和String[]的处理方式是不一样的..
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马