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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 12300123 中级黑马   /  2015-4-26 13:34  /  1085 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我有一个字符数组 char[] ch={'a','b','c'};  现在我用toString( )方法转换成字符串。
String s=ch.toString( );
syso( s );
请问为何我打印输出字符串s的时候,输出的是字符串的地址值,而不是直接输出字符串呢?Stirng类已经重写了Object类的toString方法啊,
应该直接输出字符串才对吧。

11 个回复

倒序浏览
ch.toString( );这个ch是数组,不是字符串。数组里面的元素才是字符串。
回复 使用道具 举报
s=(ch.toString( )).toString( );
ch.toString( );得到的是字符串的地址值,所以(ch.toString( )).toString( ); 得到的就是字符串的地址值了!
回复 使用道具 举报
谷歌 发表于 2015-4-26 13:43
ch.toString( );这个ch是数组,不是字符串。数组里面的元素才是字符串。

数组里面的元素也不是字符串
回复 使用道具 举报
l763631191 发表于 2015-4-26 13:49
数组里面的元素也不是字符串

看错了,不好意思
回复 使用道具 举报
很简单,ch只是引用。
回复 使用道具 举报
char[] 数组没有重写toString(); 方法。你调用toString()的到的是字符数组的地址值,你把它赋给字符串,在调用字符串的toString()方法当然是地址值啦。而且这个地址值是字符数组ch的地址值。
回复 使用道具 举报
应该是String s=new String(ch)
回复 使用道具 举报
wangys9107 发表于 2015-4-26 16:17
应该是String s=new String(ch)

正解!!感谢回答~ :)
回复 使用道具 举报
本帖最后由 大西洋 于 2015-4-26 16:47 编辑

楼上师兄说的不错,这样写才能实现你要的效果~
  1.                 char[] ch = {'a','s','f'};
  2.                 String s = new String(ch);
  3.                 System.out.println(s);
复制代码

因为String实例化之后指向了ch的数值~

其实如果你要输出ch的数值,直接写 System.out.println(ch); //不就可以了吗??





回复 使用道具 举报
char里面没有重写toString( )方法,打印s时,你打印的是ch在内存的地址
回复 使用道具 举报
我来拿币的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马