在现有的Java程序代码中,我发现了以下代码片段:
StringBuffer b = new Stringbuffer()
// fill the StringBuffer
(...)
String temp = b.toString();
return temp.subSequence(0, b.toString().length() - 1);我不明白为什么他们从0到最后都做了subSequence .
转换成字符串后的StringBuilder格式是否如此丑陋?
他们写的这段代码已经不在我公司了所以我不能问他们..。
希望你们能帮我一把。
发布于 2013-08-09 08:58:24
这样做的目的是从末尾去掉一个字符,注意所有Java标准库类都遵循关于开始/结束索引参数的约定,star是包容性的,end是排他性的。此外,我也同意代码很难看,应该是
...
return b.subSequence(0, b.length() - 1);它更短,也更有效率。另外,StringBuffer是一个遗留类,您可以用更快的StringBuilder替换它。
发布于 2013-08-09 08:55:04
后继:
temp.subSequence(0, b.toString().length() - 1);正在删除最后一个字符,而不返回相同的字符串。
发布于 2013-08-09 08:58:15
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如下所示。
System.out.println(temp.subSequence(0, b.toString().length() - 1));
System.out.println(temp.substring(0, b.toString().length() - 1));https://stackoverflow.com/questions/18143190
复制相似问题