首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >连接两个字符串

连接两个字符串
EN

Stack Overflow用户
提问于 2013-10-26 22:45:44
回答 3查看 170关注 0票数 0

我知道对于连接两个string对象,StrinbBuilder是很好用的。我想知道在这样做的时候发生了什么:

代码语言:javascript
运行
复制
"a" + i + "b";

哪个选项是最快、最安全的:

1.

代码语言:javascript
运行
复制
int i = 0;
String a = "a" + i + "b";

2.

代码语言:javascript
运行
复制
int i = 0;
String a = "a".concat(String.valueOf(i)).concat("b");

3.

代码语言:javascript
运行
复制
int i = 0;
String a = String.format("a%db", i);
EN

回答 3

Stack Overflow用户

发布于 2013-10-26 22:49:02

对于字符串连接来说,它们都不是真正最优的。一定要使用StringBuilder,但要正确使用它,不要每次都丢弃它:

代码语言:javascript
运行
复制
StringBuilder a = new StringBuilder("a");
for(int i = 0;i<10;i++){
    a.append("b");
}

这将执行此操作,而无需每次都创建新的String对象。

票数 0
EN

Stack Overflow用户

发布于 2013-10-26 22:55:05

它们都不是很好--您仍然在幕后创建一个StringBuilder,然后立即将其丢弃。以下是另外两个选项:

  • 显式创建StringBuilder并循环。

builder.toString();

  • Use builder = StringBuilder StringBuilder("a");for(int = 0;i< 10;i++) { a.append("b");} String a= new的Strings.repeat()方法,并将结果连接到一个StringBuilder

9).toString(); a=新建StringBuilder("a").append(Strings.repeat("b",String

在性能方面,真的没有太多需要改进的地方-在某种程度上,您创建的是n个字符串。我们唯一可以实际改进的就是内存开销。

票数 0
EN

Stack Overflow用户

发布于 2013-10-27 14:11:19

因为字符串在java中是不可变的,所以每次当您执行字符串操作时,都会产生一个新的字符串对象,如果应该考虑内存,则不能使用带"+“号的字符串连接,因为它会创建多个字符串对象,并且不能保证清除,因为当垃圾收集器运行时,您不知道,您还应该考虑操作应该是线程安全的,因此在使用字符串缓冲区和字符串生成器时要小心。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19608012

复制
相关文章

相似问题

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