String Penggabungan Di Jawa

1. Perkenalan

Java menyediakan sejumlah besar metode dan kelas yang didedikasikan untuk string penggabungan .

Dalam tutorial ini, kita akan menyelami beberapa di antaranya serta menguraikan beberapa perangkap umum dan praktik buruk.

2. StringBuilder

Yang pertama adalah StringBuilder yang sederhana . Kelas ini menyediakan berbagai STRING- membangun utilitas yang membuat pekerjaan mudah String manipulasi.

Mari buat contoh cepat penggabungan String menggunakan kelas StringBuilder :

StringBuilder stringBuilder = new StringBuilder(100); stringBuilder.append("Baeldung"); stringBuilder.append(" is"); stringBuilder.append(" awesome"); assertEquals("Baeldung is awesome", stringBuilder.toString());

Secara internal, StringBuilder mempertahankan larik karakter yang bisa berubah. Dalam contoh kode kami, kami telah menyatakan ini memiliki ukuran awal 100 melalui konstruktor StringBuilder . Karena deklarasi ukuran ini, StringBuilder bisa menjadi cara yang sangat efisien untuk menggabungkan String .

Perlu juga dicatat bahwa kelas StringBuffer adalah versi StringBuilder yang disinkronkan .

Meskipun sinkronisasi sering kali identik dengan keamanan utas, sinkronisasi tidak disarankan untuk digunakan dalam aplikasi multithread karena pola pembuat StringBuffer . Meskipun panggilan individu ke metode yang disinkronkan aman untuk thread, beberapa panggilan tidak.

3. Operator Penambahan

Selanjutnya adalah operator penjumlahan (+). Ini adalah operator yang sama yang menghasilkan penambahan angka dan kelebihan beban untuk digabungkan saat diterapkan ke String.

Mari kita lihat sekilas cara kerjanya:

String myString = "The " + "quick " + "brown " + "fox..."; assertEquals("The quick brown fox...", myString);

Sekilas, ini mungkin tampak jauh lebih ringkas daripada opsi StringBuilder . Namun, ketika kode sumber dikompilasi, simbol + diterjemahkan menjadi rantai panggilan StringBuilder.append () . Karena ini, mencampur metode penggabungan StringBuilder dan + dianggap praktik yang buruk .

Selain itu, penggabungan string menggunakan operator + dalam satu loop harus dihindari. Karena objek String tidak dapat diubah, setiap panggilan untuk penggabungan akan menghasilkan objek String baru yang dibuat.

4. Metode String

Kelas String itu sendiri menyediakan sejumlah besar metode untuk menggabungkan String.

4.1. String.concat

Tidak mengherankan, metode String.concat adalah port panggilan pertama kami saat mencoba menggabungkan objek String . Metode ini mengembalikan objek String , jadi merangkai bersama metode ini adalah fitur yang berguna.

String myString = "Both".concat(" fickle") .concat(" dwarves") .concat(" jinx") .concat(" my") .concat(" pig") .concat(" quiz"); assertEquals("Both fickle dwarves jinx my pig quiz", myString);

Dalam contoh ini, rantai kita dimulai dengan string literal, metode concat kemudian memungkinkan kita untuk merangkai panggilan untuk menambahkan String lebih lanjut .

4.2. String.format

Selanjutnya adalah metode String.format , yang memungkinkan kita memasukkan berbagai Objek Java ke dalam template String .

Tanda tangan metode String.format mengambil satu String yang menunjukkan templat kita . Template ini berisi karakter '%' untuk mewakili tempat berbagai Objekharus ditempatkan di dalamnya.

Setelah template kita dideklarasikan, maka dibutuhkan sebuah array Object varargs yang dimasukkan ke dalam template.

Mari kita lihat cara kerjanya dengan contoh singkat:

String myString = String.format("%s %s %.2f %s %s, %s...", "I", "ate", 2.5056302, "blueberry", "pies", "oops"); assertEquals("I ate 2.51 blueberry pies, oops...", myString);

Seperti yang bisa kita lihat di atas, metode ini telah memasukkan String kita ke dalam format yang benar.

4.3. String.join (Java 8+)

Jika aplikasi kita berjalan di Java 8 atau lebih tinggi , kita dapat memanfaatkan metode String.join . Dengan ini, kita dapat menggabungkan larik String dengan pembatas umum , memastikan tidak ada spasi yang terlewat.

String[] strings = {"I'm", "running", "out", "of", "pangrams!"}; String myString = String.join(" ", strings); assertEquals("I'm running out of pangrams!", myString); 

Keuntungan besar dari metode ini adalah tidak perlu mengkhawatirkan pembatas antara string kita.

5. StringJoiner (Java 8+)

StringJoiner mengabstraksi semua fungsionalitas String.join menjadi kelas yang mudah digunakan. The konstruktor mengambil pembatas, dengan opsional awalan dan akhiran . Kita dapat menambahkan Strings menggunakan metode add yang dinamai baik .

StringJoiner fruitJoiner = new StringJoiner(", "); fruitJoiner.add("Apples"); fruitJoiner.add("Oranges"); fruitJoiner.add("Bananas"); assertEquals("Apples, Oranges, Bananas", fruitJoiner.toString());

Dengan menggunakan kelas ini, sebagai ganti metode String.join , kita bisa menambahkan Strings saat program berjalan ; Tidak perlu membuat array terlebih dahulu!

Buka artikel kami di StringJoiner untuk informasi dan contoh lebih lanjut.

6. Array.toString

Pada topik array, kelas Array juga berisi metode toString berguna yang memformat array objek dengan baik. The Array. Metode toString juga memanggil metode toString dari setiap objek tertutup - jadi kita perlu memastikan bahwa kita telah menetapkannya.

String[] myFavouriteLanguages = {"Java", "JavaScript", "Python"}; String toString = Arrays.toString(myFavouriteLanguages); assertEquals("[Java, JavaScript, Python]", toString);

Unfortunately, the Arrays.toString method is not customizable and only outputs a String encased in square brackets.

7. Collectors.joining (Java 8+)

Finally, let's take a look at the Collectors.joining method which allows us to funnel the output of a Stream into a single String.

List awesomeAnimals = Arrays.asList("Shark", "Panda", "Armadillo"); String animalString = awesomeAnimals.stream().collect(Collectors.joining(", ")); assertEquals("Shark, Panda, Armadillo", animalString);

Using streams unlocks all of the functionality associated with the Java 8 Stream API, such as filtering, mapping, iterating and more.

8. Wrap Up

In this article, we've taken a deep dive into the multitude of classes and methods used to concatenate Stringsin the Java language.

Seperti biasa, kode sumber tersedia di GitHub.