StringBuilder.append în Java

Adaugă la sfârșitul textului un șir, un caracter, un număr sau orice obiect și returnează același StringBuilder.

Sintaxă
StringBuilder append(String s)
StringBuilder append(int i)   // și char, long, double, boolean, Object, char[]...
StringBuilder append(CharSequence s, int start, int end)

Ce face StringBuilder.append

append există în multe variante, câte una pentru fiecare tip: String, char, int, double, boolean, Object. Valoarea este transformată în text exact cum ar face String.valueOf, apoi este pusă la sfârșit.

Metoda returnează același obiect, deci poți scrie apeluri în lanț: sb.append("Ana").append(' ').append(21). Un null adăugat apare ca textul "null".

Varianta append(text, start, end) adaugă doar caracterele de la poziția start până la end (exclusiv), fără să creezi întâi un subșir.

Parametri

Parametru Descriere
s / i / c ... Valoarea de adăugat, de orice tip.
start, end Pentru varianta cu CharSequence: bucata de copiat, end exclusiv.

Ce returnează

Același obiect StringBuilder (this), ca să poți continua lanțul.

Exemple

Exemplul 1: Valori de tipuri diferite

public class Main {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        sb.append("Ana").append(' ').append(21).append(" ani, medie ").append(9.45);
        sb.append(", bursă: ").append(true);
        System.out.println(sb);

        String lipsa = null;
        sb.setLength(0);
        sb.append("Telefon: ").append(lipsa);
        System.out.println(sb);
    }
}

Rezultat

Ana 21 ani, medie 9.45, bursă: true
Telefon: null

Exemplul 2: Un tabel cu note

Construim un text pe mai multe rânduri și îl afișăm o singură dată.

public class Main {
    public static void main(String[] args) {
        String[] elevi = {"Ion", "Elena", "Mihai"};
        int[] note = {8, 10, 7};
        StringBuilder tabel = new StringBuilder();
        for (int i = 0; i < elevi.length; i++) {
            tabel.append(i + 1).append(". ").append(elevi[i]).append(": ").append(note[i]).append('\n');
        }
        System.out.print(tabel);
    }
}

Rezultat

1. Ion: 8
2. Elena: 10
3. Mihai: 7

Exemplul 3: Doar o parte dintr-un text

append(text, 0, 4) copiază caracterele 0, 1, 2 și 3.

public class Main {
    public static void main(String[] args) {
        String oras = "Iași, România";
        StringBuilder sb = new StringBuilder("Oraș: ");
        sb.append(oras, 0, 4);
        System.out.println(sb);
    }
}

Rezultat

Oraș: Iași

Greșeli frecvente

  • Scrii sb.append("a" + x + "b"): operatorul + construiește oricum un șir temporar. Mai curat: sb.append("a").append(x).append("b").
  • Adaugi un char cu un int: sb.append('A' + 1) adaugă numărul 66, nu litera B, pentru că 'A' + 1 este un int.

Comenzi înrudite

  • StringBuilder: Un text care se poate modifica pe loc: adaugi, inserezi și ștergi fără să creezi un șir nou la fiecare pas.
  • StringBuilder.insert: Inserează un text sau o valoare la o poziție dată; caracterele de după poziție se mută spre dreapta.
  • String.valueOf: Transformă orice valoare (număr, boolean, char, obiect, char[]) în String; copyValueOf face un șir dintr-un char[].
  • String.join: Lipește mai multe șiruri într-unul singur, cu un separator între ele (opusul lui split).