黑马程序员技术交流社区

标题: 关于toString()的疑问 [打印本页]

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

作者: 谷歌    时间: 2015-4-26 13:43
ch.toString( );这个ch是数组,不是字符串。数组里面的元素才是字符串。
作者: l763631191    时间: 2015-4-26 13:44
s=(ch.toString( )).toString( );
ch.toString( );得到的是字符串的地址值,所以(ch.toString( )).toString( ); 得到的就是字符串的地址值了!
作者: l763631191    时间: 2015-4-26 13:49
谷歌 发表于 2015-4-26 13:43
ch.toString( );这个ch是数组,不是字符串。数组里面的元素才是字符串。

数组里面的元素也不是字符串
作者: 谷歌    时间: 2015-4-26 13:51
l763631191 发表于 2015-4-26 13:49
数组里面的元素也不是字符串

看错了,不好意思
作者: 1017161726    时间: 2015-4-26 15:08
很简单,ch只是引用。
作者: Aelous_6    时间: 2015-4-26 16:02
char[] 数组没有重写toString(); 方法。你调用toString()的到的是字符数组的地址值,你把它赋给字符串,在调用字符串的toString()方法当然是地址值啦。而且这个地址值是字符数组ch的地址值。
作者: wangys9107    时间: 2015-4-26 16:17
应该是String s=new String(ch)
作者: 大西洋    时间: 2015-4-26 16:36
wangys9107 发表于 2015-4-26 16:17
应该是String s=new String(ch)

正解!!感谢回答~ :)
作者: 大西洋    时间: 2015-4-26 16:38
本帖最后由 大西洋 于 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); //不就可以了吗??






作者: diy_coders    时间: 2015-4-26 17:01
char里面没有重写toString( )方法,打印s时,你打印的是ch在内存的地址
作者: 海带    时间: 2015-4-26 17:05
我来拿币的





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