代码之家  ›  专栏  ›  技术社区  ›  fastcodejava

用+连接字符串总是个坏主意吗?

  •  13
  • fastcodejava  · 技术社区  · 14 年前

    我有如下代码:

    String s = "";
    for (My my : myList) {
        s += my.getX();
    }
    

    执行此操作时,findbugs始终报告错误。

    9 回复  |  直到 7 年前
        1
  •  21
  •   Anthony Forloney    14 年前

    +

    String word = "Hello";
    word += " World!";
    

    StringBuilder

    StringBuilder sb = new StringBuilder();
    for (My my : myList) {
        sb.append(my.getX());
    }
    
        2
  •  8
  •   John B.    14 年前

        3
  •  4
  •   Margus    14 年前

    string+=string

    private String(String s1, String s2) {
        if (s1 == null) {
            s1 = "null";
        }
        if (s2 == null) {
            s2 = "null";
        }
        count = s1.count + s2.count;
        value = new char[count];
        offset = 0;
        System.arraycopy(s1.value, s1.offset, value, 0, s1.count);
        System.arraycopy(s2.value, s2.offset, value, s1.count, s2.count);
    }
    

    final void append0(String string) {
        if (string == null) {
            appendNull();
            return;
        }
        int adding = string.length();
        int newSize = count + adding;
        if (newSize > value.length) {
            enlargeBuffer(newSize);
        }
        string.getChars(0, adding, value, count);
        count = newSize;
    }
    

    string + string

    public static String scat(String... vargs) {
        StringBuilder sb = new StringBuilder();
    
        for (String str : vargs)
            sb.append(str);
    
        return sb.toString();
    }
    

    String abcd = scat("a","b","c","d"); 
    

    string.Concat();

    public static String scat(Collection<?> vargs) {
        StringBuilder sb = new StringBuilder();
    
        for (Object str : vargs)
            sb.append(str);
    
        return sb.toString();
    }
    

    result = scat(myList)
    
        4
  •  3
  •   monitorme    14 年前

        5
  •  3
  •   Peter DeWeese    14 年前

    +

        6
  •  3
  •   Tony Ennis    14 年前

        7
  •  1
  •   Maksim Vi.    14 年前

    String c = "a" + "b"

        8
  •  1
  •   Paweł Dyda    14 年前

    String result = "Scanning found " + Integer.toString(numberOfViruses) + " viruses";
    

        9
  •  0
  •   Kushal Mondal    7 年前

    StringBuilder