黑马程序员技术交流社区
标题:
关于char int 数组的一个疑问
[打印本页]
作者:
魏明明
时间:
2012-3-22 01:09
标题:
关于char int 数组的一个疑问
本帖最后由 魏明明 于 2012-3-22 10:48 编辑
为什么 char [] chs = {'2','1'}; 可以直接用System.out.priint(chs);输出数组元素
而 int [] arr = {2,1}; 用System.out.priint(arr); 输出的 却是地址
char 不是用是引用的对内存里面的数据么 为什么能直接输出值?
作者:
谢明
时间:
2012-3-22 01:29
String.valueOf、StringBuffer.append以及System.out.print中都对char[]数组单独处理,即进行了重载,使之可以输出内容(或者对内容操作处理),而不是地址。
但也有些情况 比如 +连接符 链接了以后 打印的 就是 所谓地址了
作者:
胡元
时间:
2012-3-22 01:35
本帖最后由 胡元 于 2012-3-22 01:36 编辑
{:soso_e100:}
作者:
朱亚安
时间:
2012-3-22 01:56
你这个问题,给我弄懵了,你这个输出语句有问题吧。。。。。应该是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方法,所以输出的是我们看不懂的东西了
作者:
刘元霄
时间:
2012-3-22 04:09
char[] cha = {'2','1'};
int[] arr = {2,1};
这两个貌似Systeme.out.print(); 输出的话都是地址值吧!
作者:
张锦萍
时间:
2012-3-22 10:40
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());
作者:
张锦萍
时间:
2012-3-22 10:43
建议大家用elipse或MyElipse,看一下一些方法会接着调用了哪些方法,其实Java就像一个密密麻麻的蜘蛛网,每个类之间有千丝万缕的联系,根据根据经纬线找出他们的联系,就容易多了。。
作者:
魏明明
时间:
2012-3-22 10:53
朱亚安 发表于 2012-3-22 01:56
你这个问题,给我弄懵了,你这个输出语句有问题吧。。。。。应该是System.out.print(chs);System.ou ...
恩 哈哈 我的输出语句是写错了 3Q这个问题 我明白了
作者:
魏明明
时间:
2012-3-22 10:55
朱亚安 发表于 2012-3-22 01:56
你这个问题,给我弄懵了,你这个输出语句有问题吧。。。。。应该是System.out.print(chs);System.ou ...
恩 哈哈 我的输出语句是写错了 3Q这个问题 我明白了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2