黑马程序员技术交流社区

标题: StringBuffer中setCharAt方法为什么返回值是空 [打印本页]

作者: 松涛小玮    时间: 2014-2-18 23:01
标题: StringBuffer中setCharAt方法为什么返回值是空
StringBuffer中setCharAt方法为什么返回值是空  而不能是返回StringBuffer呢?
StringBuffer sb=new StringBuffer("abcde");
sb.setCharAt(2,"k");
System.out.println(sb.toString);
此程序中既然返回是空,为什么还能直接打印?
作者: panzhenglian    时间: 2014-2-18 23:16
StringBuffer中的setCharAt方法的返回值并不是空,而是void,是无返回值,因为这个方法只起到一个设置的功能,将StringBuffer中的给定索引位置的值设置成给定的值,
作者: why168    时间: 2014-2-18 23:29
StringBuffer中的setCharAt() 是没有返回值,也就是void!
sb.setCharAt(2,"k");之所以存在问题setCharAt参数只能是char类型,应该是sb.setCharAt(2,'k');   【单引号】
如果你想替换字符串可以用repalce(start,end,string)。即sb.replace(2,3,"k");
作者: 松涛小玮    时间: 2014-2-19 00:07
panzhenglian 发表于 2014-2-18 23:16
StringBuffer中的setCharAt方法的返回值并不是空,而是void,是无返回值,因为这个方法只起到一个设置的功能, ...

谢谢指正  返回是void  我用语不太严谨  着急发帖 那个还想问一下 上面代码能否写成System.out.println(sb.setCharAt(2,'k').toString());
不能的话
假设setCharAt()方法返回StringBuffer的话  上面代码能否写成System.out.println(sb.setCharAt(2,'k').toString());
作者: 松涛小玮    时间: 2014-2-19 00:09
why168 发表于 2014-2-18 23:29
StringBuffer中的setCharAt() 是没有返回值,也就是void!
sb.setCharAt(2,"k");之所以存在问题setCharAt参 ...

谢谢您的补充
作者: panzhenglian    时间: 2014-2-19 00:14
松涛小玮 发表于 2014-2-19 00:07
谢谢指正  返回是void  我用语不太严谨  着急发帖 那个还想问一下 上面代码能否写成System.out.println(s ...

System.out.println(sb.setCharAt(2,'k').toString());这句肯定会出现空指针异常,假设setCharAt方法返回StringBuffer就可以那样写,不过没啥意义了,调用者调用setCharAt方法改变了自己的属性,又返回自己,设计Java的人肯定不会这么干,顶多返回boolean或者被覆盖的元素




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