黑马程序员技术交流社区

标题: char [打印本页]

作者: 梦想工程师    时间: 2016-10-3 22:46
标题: char
今天做题发现一个很有趣的问题
char[] ch = {'s','t','r','i','n','g'};
System.out.println(ch);
这样会输出"string"
System.out.println(ch + "是字符串的意思");
这样就会输出一个地址值?
System.out.println( "这个字符串是"+ch );
也是输出地址值,这是为什么啊?
作者: Daveweil    时间: 2016-10-3 23:43
你还没学API吧,这是没重写的头string方法

作者: Jarc    时间: 2016-10-3 23:49
API里看看toString方法就懂了
作者: 15835811325    时间: 2016-10-4 00:19
在后面加一个字符串,,,,,会加字符转换成一个字符串类型的,,,而直接打印字符串,,,输出的是其地址值,,,因为有写这个对象的tostring
作者: 三人壹大    时间: 2016-10-4 23:37
并不是toString

1.png (2.14 KB, 下载次数: 20)

1.png

作者: 三人壹大    时间: 2016-10-4 23:39
这是调用toString(如果是toString原因的话,我把省略的补全应该不会影响)

toString.png (81.23 KB, 下载次数: 29)

toString.png

作者: 三人壹大    时间: 2016-10-4 23:49
Object中的toString,所以没有重写.

作者: IceLoveInFire丶    时间: 2016-10-5 02:06
这个问题应该是system.out.println() 这段话的原因,可以查源码看。不过有点小复杂,
可以这样理解,char数组再单独打印的情况下,某种意义上等同于字符串。
不想探究太深就简单记,char 数组比较特殊吧




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2