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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 梦想工程师 中级黑马   /  2016-10-3 22:46  /  864 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天做题发现一个很有趣的问题
char[] ch = {'s','t','r','i','n','g'};
System.out.println(ch);
这样会输出"string"
System.out.println(ch + "是字符串的意思");
这样就会输出一个地址值?
System.out.println( "这个字符串是"+ch );
也是输出地址值,这是为什么啊?

7 个回复

倒序浏览
你还没学API吧,这是没重写的头string方法
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
API里看看toString方法就懂了
回复 使用道具 举报
在后面加一个字符串,,,,,会加字符转换成一个字符串类型的,,,而直接打印字符串,,,输出的是其地址值,,,因为有写这个对象的tostring
回复 使用道具 举报
并不是toString

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

1.png
回复 使用道具 举报
这是调用toString(如果是toString原因的话,我把省略的补全应该不会影响)

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

toString.png
回复 使用道具 举报
Object中的toString,所以没有重写.
回复 使用道具 举报
这个问题应该是system.out.println() 这段话的原因,可以查源码看。不过有点小复杂,
可以这样理解,char数组再单独打印的情况下,某种意义上等同于字符串。
不想探究太深就简单记,char 数组比较特殊吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马