gpt4 book ai didi

java - 字符串生成器与字符串连接

转载 作者:IT老高 更新时间:2023-10-28 21:14:09 25 4
gpt4 key购买 nike

与纯字符串连接相比,使用字符串构建器的好处和权衡是什么?

new StringBuilder(32).append(str1)
.append(" test: ")
.append(val)
.append(" is changed")
.toString();

vs 说

str1 + " test: " + val + " is changed".

str1 是一个随机的 10 个字符的字符串。str2 是一个随机的 8 个字符的字符串。

最佳答案

在您的特定示例中,没有,因为编译器在内部使用 StringBuilder 进行字符串连接。但是,如果连接发生在循环中,编译器可以创建多个 StringBuilderString 对象。例如:

String s= "" ;
for(int i= 0 ; i < 10 ; i++ )
s+= "a" ;

每次执行上面的第 3 行时,都会创建一个新的 StringBuilder 对象,附加 s 的内容,附加“a”,然后是 StringBuilder 被转换为一个字符串以分配回 s。一共10个StringBuilder和10个String

反之,在

StringBuilder sb= new StringBuilder() ;
for(int i= 0 ; i < 10 ; i++ )
sb.append( "a" );
String s= sb.toString() ;

仅创建 1 个 StringBuilder 和 1 个 String

主要原因是编译器不够聪明,无法理解第一个循环等同于第二个循环并生成更高效的(字节)代码。在更复杂的情况下,即使是最聪明的编译器也不可能知道。如果你绝对需要这种优化,你必须通过显式使用 StringBuilders 手动引入。

关于java - 字符串生成器与字符串连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18453458/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com