Rentetan Bersambung Di Jawa

1. Pengenalan

Java menyediakan sebilangan besar kaedah dan kelas yang didedikasikan untuk menggabungkan String.

Dalam tutorial ini, kami akan menyelidiki beberapa di antaranya serta menggariskan beberapa perangkap dan amalan buruk yang biasa.

2. StringBuilder

Yang pertama adalah StringBuilder yang rendah hati . Kelas ini menyediakan pelbagai String- membina utiliti yang membuat kerja yang mudah dari String manipulasi.

Mari buat contoh ringkas gabungan 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 dalaman, StringBuilder mengekalkan pelbagai watak yang boleh berubah. Dalam contoh kod kami, kami telah menyatakan ini mempunyai ukuran awal 100 melalui StringBuilder konstruktor. Kerana pernyataan ukuran ini, StringBuilder dapat menjadi cara yang sangat efisien untuk menggabungkan Strings .

Perlu juga diperhatikan bahawa kelas StringBuffer adalah versi StringBuilder yang disegerakkan .

Walaupun penyegerakan sering identik dengan keselamatan benang, ia tidak digalakkan untuk digunakan dalam aplikasi multithreaded kerana corak pembangun StringBuffer . Walaupun panggilan individu ke kaedah yang disegerakkan selamat di utas, banyak panggilan tidak.

3. Pengendali Penambahan

Selanjutnya adalah pengendali penambahan (+). Ini adalah pengendali yang sama yang menghasilkan penambahan nombor dan kelebihan beban untuk digabungkan ketika diterapkan pada Strings.

Mari lihat bagaimana ini berfungsi:

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

Pada pandangan pertama, ini mungkin kelihatan lebih ringkas daripada pilihan StringBuilder . Walau bagaimanapun, apabila kod sumber menyusun, simbol + diterjemahkan ke rantai panggilan StringBuilder.append () . Oleh kerana ini, mencampurkan StringBuilder dan kaedah + daripada dinamika adalah dianggap amalan yang tidak baik .

Selain itu, gabungan tali menggunakan operator + dalam satu gelung harus dielakkan. Oleh kerana objek String tidak berubah, setiap panggilan untuk penggabungan akan menghasilkan objek String baru yang dibuat.

4. Kaedah Rentetan

The String kelas sendiri menyediakan berbagai macam kaedah untuk concatenating Strings.

4.1. String.concat

Tidak menghairankan, kaedah String.concat adalah port panggilan pertama kami ketika cuba menggabungkan objek String . Kaedah ini mengembalikan objek String , jadi kaedah mengikat bersama adalah ciri 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 kami dimulakan dengan String literal, kaedah concat kemudian membolehkan kita membuat panggilan untuk menambahkan Strings selanjutnya .

4.2. String.format

Selanjutnya adalah metode String.format , yang memungkinkan kita menyuntikkan berbagai Objek Java ke dalam templat String .

The String.format kaedah tandatangan mengambil tunggal String menandakan template kami . Ini template mengandungi watak-watak '%' untuk mewakili mana pelbagai Objekharus diletakkan di dalamnya.

Setelah templat kami diisytiharkan, ia kemudian memerlukan array Objek varargs yang disuntikkan ke dalam templat.

Mari lihat bagaimana ini berfungsi dengan contoh ringkas:

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 kita dapat lihat di atas, kaedah yang telah menyuntik kami Strings ke dalam format yang betul.

4.3. String.join (Java 8+)

Sekiranya aplikasi kita berjalan di Java 8 atau lebih tinggi , kita dapat memanfaatkan kaedah String.join . Dengan ini, kita dapat bergabung dengan rangkaian Strings dengan pembatas yang sama , memastikan tidak ada ruang yang terlepas.

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

Kelebihan besar kaedah ini adalah tidak perlu risau tentang pembatas antara tali kita.

5. StringJoiner (Java 8+)

StringJoiner menyusun semua fungsi String.join menjadi kelas yang mudah digunakan. The pembina mengambil pembatas, dengan pilihan awalan dan akhiran . Kita boleh menambahkan Strings menggunakan kaedah tambah yang dinamakan .

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

Dengan menggunakan kelas ini, bukannya kaedah String.join , kita dapat menambahkan Strings semasa program berjalan ; Tidak perlu membuat susunan terlebih dahulu!

Baca artikel kami mengenai StringJoiner untuk maklumat dan contoh lebih lanjut.

6. Array.toString

Mengenai topik tatasusunan, kelas Array juga mengandungi kaedah toString yang berguna yang membentuk pelbagai objek dengan baik. The Arrays. Kaedah toString juga memanggil kaedah toString bagi objek tertutup - jadi kita perlu memastikannya mempunyai satu yang ditentukan.

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

Malangnya, Array. Kaedah toString tidak dapat disesuaikan dan hanya mengeluarkan String yang terbungkus dalam tanda kurung.

7. Collectors.joining (Java 8+)

Akhirnya, mari kita lihat kaedah Collectors.joining yang membolehkan kita menyalurkan output Stream ke dalam String tunggal .

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

Menggunakan aliran membuka semua fungsi yang berkaitan dengan Java 8 Stream API, seperti penapisan, pemetaan, iterasi dan banyak lagi.

8. Balut Ke Atas

Dalam artikel ini, kami telah mempelajari banyak kelas dan kaedah yang digunakan untuk menggabungkan Stringsdalam bahasa Jawa.

Seperti biasa, kod sumber tersedia di GitHub.