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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 魏明明 黑马帝   /  2012-3-22 01:09  /  1961 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 魏明明 于 2012-3-22 10:48 编辑

为什么 char []  chs = {'2','1'};    可以直接用System.out.priint(chs);输出数组元素

而  int [] arr = {2,1};  用System.out.priint(arr);  输出的 却是地址

char  不是用是引用的对内存里面的数据么  为什么能直接输出值?

9 个回复

倒序浏览
String.valueOf、StringBuffer.append以及System.out.print中都对char[]数组单独处理,即进行了重载,使之可以输出内容(或者对内容操作处理),而不是地址。
但也有些情况  比如  +连接符 链接了以后 打印的  就是  所谓地址了  
回复 使用道具 举报
本帖最后由 胡元 于 2012-3-22 01:36 编辑

{:soso_e100:}
回复 使用道具 举报
       你这个问题,给我弄懵了,你这个输出语句有问题吧。。。。。应该是System.out.print(chs);System.out.println(arr);吧。
首先,我查了一下System.out,out的原型是 static PrintStream out,然后再PrintStream流中有个方法void print(char[] s)
这个方法就是我们用的System.out.print,它可以直接输出一个字符数组的内容。然而并没有print(int[] arr) 这个方法,所以在调用
print输出这个int型数组的时候并没有输出其内容,而输出就想到调用这个int型数组的toString方法,所以输出的是我们看不懂的东西了
  
回复 使用道具 举报
char[] cha = {'2','1'};
int[] arr = {2,1};
这两个貌似Systeme.out.print(); 输出的话都是地址值吧!
回复 使用道具 举报
char[]  chs = {'2','1'};
System.out.println(chs);println方法内部调用print方法,print方法有调用write(char[] chs)方法;

而int[] arr = {2,1};  
System.out.println(arr); println方法最后调用obj.toString();返回getClass().getName() + "@" + Integer.toHexString(hashCode());
回复 使用道具 举报
建议大家用elipse或MyElipse,看一下一些方法会接着调用了哪些方法,其实Java就像一个密密麻麻的蜘蛛网,每个类之间有千丝万缕的联系,根据根据经纬线找出他们的联系,就容易多了。。
回复 使用道具 举报
魏明明 黑马帝 2012-3-22 10:53:20
8#
朱亚安 发表于 2012-3-22 01:56
你这个问题,给我弄懵了,你这个输出语句有问题吧。。。。。应该是System.out.print(chs);System.ou ...

恩 哈哈  我的输出语句是写错了    3Q这个问题 我明白了
回复 使用道具 举报
魏明明 黑马帝 2012-3-22 10:55:18
9#
朱亚安 发表于 2012-3-22 01:56
你这个问题,给我弄懵了,你这个输出语句有问题吧。。。。。应该是System.out.print(chs);System.ou ...

恩 哈哈  我的输出语句是写错了    3Q这个问题 我明白了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马