首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >转换Stringbuffer subSequence()后调用字符串toString()

转换Stringbuffer subSequence()后调用字符串toString()
EN

Stack Overflow用户
提问于 2013-08-09 08:52:19
回答 4查看 417关注 0票数 3

在现有的Java程序代码中,我发现了以下代码片段:

代码语言:javascript
复制
StringBuffer b = new Stringbuffer()
// fill the StringBuffer
(...)

String temp = b.toString();
return temp.subSequence(0, b.toString().length() - 1);

我不明白为什么他们从0到最后都做了subSequence .

转换成字符串后的StringBuilder格式是否如此丑陋?

他们写的这段代码已经不在我公司了所以我不能问他们..。

希望你们能帮我一把。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-08-09 08:58:24

这样做的目的是从末尾去掉一个字符,注意所有Java标准库类都遵循关于开始/结束索引参数的约定,star是包容性的,end是排他性的。此外,我也同意代码很难看,应该是

代码语言:javascript
复制
...
return b.subSequence(0, b.length() - 1);

它更短,也更有效率。另外,StringBuffer是一个遗留类,您可以用更快的StringBuilder替换它。

票数 4
EN

Stack Overflow用户

发布于 2013-08-09 08:55:04

后继:

代码语言:javascript
复制
temp.subSequence(0, b.toString().length() - 1);

正在删除最后一个字符,而不返回相同的字符串。

票数 1
EN

Stack Overflow用户

发布于 2013-08-09 08:58:15

代码语言:javascript
复制
    StringBuffer b = new StringBuffer();
    b.append("a");
    b.append("b");
    b.append("c");
    String temp = b.toString();        
    System.out.println(temp); // now out put is abc

如果有人想要subString,您可以subString如下所示。

代码语言:javascript
复制
    System.out.println(temp.subSequence(0, b.toString().length() - 1));
    System.out.println(temp.substring(0, b.toString().length() - 1));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18143190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档