java中char数组的问题

char[]c=newchar[]{'q'};System.out.println(c);输出的c为q但是如果用System.out.println(c+"");输出的则... char[] c = new char[]{'q'};
System.out.println(c);
输出的c为q
但是如果用System.out.println(c+"");
输出的则是c的地址值,求大神解答下为什么会这样?
展开
 我来答
lsd104
推荐于2017-09-10 · TA获得超过589个赞
知道答主
回答量:55
采纳率:0%
帮助的人:59万
展开全部
这个其实是一个基础问题,System.out.println(c+"");因为有个+号连字符,所以最后会变成一个字符串对象,因为你没重写toString()方法,所以会输出用类似[C@1c5fde0这样的值,这样值其实你可以在Object对象的toString()方法找到为什么是这样的。getClass().getName() + '@' + Integer.toHexString(hashCode()),也就是类名+@+16机制的一串数字。
追问
其实我懂了,PrintStream中的println()中有很多重载的方法,System.out.println(c)则是调用了println(char[] c)的方法,而另一个则是用println(String s)的方法,输出的自然是c的地址了。。。不过谢谢帮助。
追答
不客气!
yuquan0405
2015-06-04 · TA获得超过156个赞
知道小有建树答主
回答量:139
采纳率:0%
帮助的人:73.4万
展开全部
c+"" 方式是因为执行的是 c.toString()+"" 先将 c 转换字符再拼接
你可以使用 System.out.printf(c.toString()); 看到相同的结果
而System.out.printf(c) 是有printf(char [])该重载方法可以输出这个类型
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式