Java 连接两条线

Java 连接两条线,java,string,concat,Java,String,Concat,我知道StrinbBuilder非常适合用于连接两个字符串对象。我想知道这样做时会发生什么: "a" + i + "b"; 哪个选项最快、最安全: 一, 二, 三, 它们都不是字符串串联的最佳选择。请务必使用StringBuilder,但要正确使用,不要每次都丢弃它: StringBuilder a = new StringBuilder("a"); for(int i = 0;i<10;i++){ a.append("b"); } StringBuilder a=新的Stri

我知道StrinbBuilder非常适合用于连接两个字符串对象。我想知道这样做时会发生什么:

"a" + i + "b";
哪个选项最快、最安全:

一,

二,

三,


它们都不是字符串串联的最佳选择。请务必使用StringBuilder,但要正确使用,不要每次都丢弃它:

StringBuilder a = new StringBuilder("a");
for(int i = 0;i<10;i++){
    a.append("b");
}
StringBuilder a=新的StringBuilder(“a”);

对于(int i=0;i它们都不是很好-您仍然在封面下创建一个
StringBuilder
,然后立即丢弃它。以下是两个其他选项:

  • 显式创建
    StringBuilder
    并循环

    StringBuilder builder = new StringBuilder("a");
    for(int i = 0; i < 10; i++) {
        a.append("b");
    }
    String a = builder.toString();
    

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

因为字符串在java中是不可变的,所以每次执行导致新字符串对象的字符串操作时,如果考虑内存,则不能使用字符串连接与“+”符号,因为它将创建多个字符串对象和清理不保证,当垃圾收集器运行你不知道,你也应该认为操作应该是线程安全的,所以小心使用String缓冲区和String Bu建器

“[代码]是一个坏的举动,因为StringBuilder对象被创建了10次。”没有创建StringBuilder对象。StringBuilder就是其中的一种方法。没有一种替代方法可以像原始代码那样做…抱歉,您不理解这个问题,它根本不是关于循环代码的。我现在删除了它。这有帮助吗:-?什么是“最安全的”?提供的任何选项都没有风险。是的,我知道这一点,但这不是问题。我只是在创建第一个字符串时询问连接字符串的问题。最快的方法是什么:字符串a=“a”+i+“b”;
+
操作实际上是相同的。因此mb
+
更可取,因为它更短。
int i = 0;
String a = String.format("a%db", i);
StringBuilder a = new StringBuilder("a");
for(int i = 0;i<10;i++){
    a.append("b");
}
StringBuilder builder = new StringBuilder("a");
for(int i = 0; i < 10; i++) {
    a.append("b");
}
String a = builder.toString();
String a = new StringBuilder("a").append(Strings.repeat("b", 9).toString();