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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

StringBuffer中setCharAt方法为什么返回值是空  而不能是返回StringBuffer呢?
StringBuffer sb=new StringBuffer("abcde");
sb.setCharAt(2,"k");
System.out.println(sb.toString);
此程序中既然返回是空,为什么还能直接打印?

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

5 个回复

倒序浏览
StringBuffer中的setCharAt方法的返回值并不是空,而是void,是无返回值,因为这个方法只起到一个设置的功能,将StringBuffer中的给定索引位置的值设置成给定的值,

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
StringBuffer中的setCharAt() 是没有返回值,也就是void!
sb.setCharAt(2,"k");之所以存在问题setCharAt参数只能是char类型,应该是sb.setCharAt(2,'k');   【单引号】
如果你想替换字符串可以用repalce(start,end,string)。即sb.replace(2,3,"k");

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
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());
回复 使用道具 举报
why168 发表于 2014-2-18 23:29
StringBuffer中的setCharAt() 是没有返回值,也就是void!
sb.setCharAt(2,"k");之所以存在问题setCharAt参 ...

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

System.out.println(sb.setCharAt(2,'k').toString());这句肯定会出现空指针异常,假设setCharAt方法返回StringBuffer就可以那样写,不过没啥意义了,调用者调用setCharAt方法改变了自己的属性,又返回自己,设计Java的人肯定不会这么干,顶多返回boolean或者被覆盖的元素
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马