CodeGym /Java Blog /Acak /Metode Append() di Java: StringBuilder dan StringBuffer
John Squirrels
Level 41
San Francisco

Metode Append() di Java: StringBuilder dan StringBuffer

Dipublikasikan di grup Acak
append() adalah metode Java dari kelas StringBuilder dan StringBuffer yang menambahkan beberapa nilai ke urutan saat ini. Bahkan jika Anda tidak tahu apa metode append() itu, Anda mungkin sudah menggunakannya secara implisit. Ini terjadi ketika Anda menggabungkan String di Java menggunakan operator +. Intinya adalah penggabungan String di Java diimplementasikan menggunakan kelas StringBuilder atau StringBuffer dan metode append() mereka .

Sangat Singkat tentang String, StringBuffer dan StringBuilder

Seperti yang mungkin Anda ketahui, kelas String bersifat final (tidak memiliki kelas anak) dan tidak dapat diubah (instance dari kelas ini tidak dapat dimodifikasi setelah dibuat). Faktanya, karena kekekalan kelas String, instance string baru dibuat sebagai hasil dari setiap operasi, dan yang lama dibuang, menghasilkan banyak sampah. Untuk menangani pembuatan sampah sementara akibat modifikasi objek String, Anda dapat menggunakan kelas StringBuffer atau StringBuilder. Perbedaan utama antara dua yang terakhir adalah bahwa StringBuffer disinkronkan sedangkan StringBuilder tidak. Oleh karena itu, gunakan StringBuffer untuk string yang akan sering dimodifikasi di lingkungan multi-threaded dan StringBuilder untuk lingkungan single-threaded.Tambahkan () Metode di Jawa: StringBuilder dan StringBuffer - 1

Tambahkan () di StringBuilder dan StringBuffer

append() adalah salah satu metode teratas dari kelas StringBuilder dan StringBuffer. Itu menambahkan nilai baru ke urutan saat ini. Ada 13 berbagai metode append() yang kelebihan muatan di kelas StringBuffer dan StringBuilder. Mari kita lihat metode append untuk StringBuilder. Bagaimanapun, mereka bekerja persis sama dalam kasus StringBuffer.
  • tambahkan StringBuilder publik (boolean b)
  • tambahkan StringBuilder publik (karakter c)
  • publik StringBuilder menambahkan(char[] str)
  • publik StringBuilder append(char[] str, int offset, int len)
  • tambahkan StringBuilder publik (CharSequence cs)
  • tambahkan StringBuilder publik (CharSequence cs, int start, int end)
  • tambahkan StringBuilder publik (double d)
  • publik StringBuilder tambahkan (float f)
  • tambahkan StringBuilder publik (int i)
  • tambahkan StringBuilder publik (panjang lng)
  • tambahkan StringBuilder publik (Objek objek)
  • tambahkan StringBuilder publik (String str)
  • tambahkan StringBuilder publik (StringBuffer sb)
Mari kita bahas beberapa di antaranya dan jelaskan dengan contoh apa yang sebenarnya dilakukan oleh metode append() .

Java.lang.StringBuilder.append(int i)

java.lang.StringBuilder.append(int i) adalah metode yang memungkinkan menambahkan bilangan bulat ke objek StringBuilder yang ada. Mari kita lihat contoh penggunaan Java.lang.StringBuilder.append(int i) :

StringBuilder s = new StringBuilder(“I love Java ”);  
int i = 14;
//the method appends StringBuilder and integer   
s.append(i); 
System.out.println(s); 
Output di sini adalah:
Saya suka Jawa 14
Apa yang terjadi disini? Pertama, kami membuat StringBuilder bernama s dengan nilai "I love Java". Kemudian ditambahkan bilangan bulat 14 menggunakan append(int) . Sebenarnya, kami menambahkan bukan bilangan bulat, tetapi string "14" dan mendapatkan nilai StringBuilder yang diperbarui menjadi "I love Java 14". Dengan demikian, metode mengubah argumen menjadi objek StringBuilder, mengikatnya ke objek StringBuilder yang sudah ada, dan mengembalikan yang diperbarui.

Contoh StringBuilder append() untuk argumen Objek, int, boolean, dan String

Cerita yang sama akan terjadi dengan semua metode kelebihan beban lainnya dengan elemen angka, string, karakter, atau array. Mari kita membuat LegoBrick Class dan Color enum untuk mendemonstrasikan metode append(Object obj) StringBuilder publik .

//enum with colors 
 public enum Color {
   RED, YELLOW, BLUE;
}
//LegoBrick Class code 
public class LegoBrick {
   Color color;
   boolean isConnected;

   public void connect() {
       System.out.println("This brick is connected");
       this.isConnected = true;
   }

   public void disconnect() {
       System.out.println("Disconnected");
       isConnected = false;
   }

   public LegoBrick(Color color, boolean isConnected) {
       this.color = color;
       this.isConnected = isConnected;
   }

   public Color getColor() {
       return color;
   }

   public boolean isConnected() {
       return isConnected;
   }

   @Override
   public String toString() {
       return "LegoBrick{" +
              "color=" + color +
              ", isConnected=" + isConnected +
              '}';
   }
}
Sekarang mari kita buat Kelas AppendDemo di mana kita akan menunjukkan penambahan StringBuilder dasar dengan String, int, LegoBrick, dan boolean. Kedengarannya aneh, tetapi berhasil!

public class AppendDemo {

   public static void main(String[] args) {
       StringBuilder s = new StringBuilder("I love");
System.out.println(s)
//the method appends StringBuilder and String
       s.append(" Java");
       System.out.println(s);
//the method appends StringBuilder and int
       s.append(14);
       System.out.println(s);
       LegoBrick legoBrick = new LegoBrick(Color.RED, false);
//the method appends StringBuilder and LegoBrick 
       s.append(legoBrick);
       System.out.println(s);
//the method appends StringBuilder and boolean
       System.out.println(s.append(5<7));
   }
}
Outputnya adalah:
Saya suka Saya suka Java Saya suka Java14 Saya suka Java14LegoBrick{color=RED, isConnected=false} Saya suka Java14LegoBrick{color=RED, isConnected=false}true
Pertama, kami membuat dan menampilkan StringBuilder "I love", lalu Pertama, kami kemudian menambahkannya secara berurutan menggunakan metode append() sebuah String, sebuah nomor int, sebuah representasi String dari sebuah Object dan sebuah boolean.

StringBuilder tambahkan(char[] cstr, set int, panjang int)

Mari kita lihat metode append() dengan tiga parameter. Itu menambahkan representasi dari subarray dari array karakter yang diberikan ke string. Jadi disini:
  • cstr adalah larik karakter yang akan ditambahkan
  • atur indeks karakter pertama yang akan ditambahkan
  • panjang adalah jumlah karakter untuk ditambahkan.
Mirip dengan metode append() lainnya , metode ini mengembalikan objek StringBuilder yang diperluas. Berikut adalah contoh penggunaan append(char[], cstr, int set, int length) sebagai bagian dari kode aplikasi Java.

public class AppendDemo {
   // an example of using append(char[], cStr, int set, int length)

   public static void main(String[] args) {
       StringBuilder s = new StringBuilder("I love ");
      //here is a char's array, part of which we are going to append to s
       char[] cStr = new char[]
               {'c', 'o', 'd', 'e', 'J', 'a', 'v', 'a', '1', '4'};
       //we append 4 elements of cStr from the 4th element "J"
       s.append(cStr, 4, 4);
       System.out.println(s);
   }
}
Outputnya adalah:
Saya suka bahasa Jawa

StringBuilder append() dengan argumen CharSequence

Anda mungkin telah memperhatikan dua metode yang memiliki CharSequence sebagai argumennya.
  • tambahkan StringBuilder publik (CharSequence cs)
  • tambahkan StringBuilder publik (CharSequence cs, int start, int end)
Tidak semua pemula tahu bahwa CharSequence adalah sebuah Antarmuka. Menurut dokumentasi CharSequence adalah urutan nilai char yang dapat dibaca dan menyediakan akses yang seragam dan hanya baca ke berbagai jenis urutan karakter. Antarmuka diimplementasikan oleh Kelas Java seperti String, StringBuffer, StringBuilder dan banyak lagi. Jadi jika Anda tidak tahu apa yang lebih baik untuk digunakan dalam program Anda, String, StringBuffer atau StringBuilder, Anda dapat menggunakan CharSequence. StringBuilder append(CharSequence cs, int start, int end) bekerja hampir seperti append(char[] cstr, int set, int length)kita bahas di atas. Namun, metode ini menentukan elemen pertama dari urutan dan yang terakhir. Penting untuk diingat bahwa awal termasuk dalam urutan, tetapi akhir tidak (yaitu, elemen terakhir dalam urutan adalah elemen yang muncul sebelum akhir). Mengapa demikian? Itu hanya cara itu di Jawa. Mari kita tunjukkan apa itu CharSequence dan metode append(CharSequence cs) dan append(CharSequence cs, int start, int end) .

public class CharSequenceDemo {

   public static void printCharSequence(CharSequence ch) {
       System.out.println(ch);
   }
       public static void main(String[] args) {
           CharSequence myString = new String("This is String ");
           printCharSequence(myString);
           CharSequence myStringBuilder = new StringBuilder("This is StringBuilder ");
           printCharSequence(myStringBuilder);
           StringBuilder s = new StringBuilder("my StringBuilder ");
//StringBuilder.append           
s.append(myStringBuilder);
           System.out.println(s);
//StringBuilder.append
           s.append(myString);
           System.out.println(s);
           s.append(myString, 5,7);
           System.out.println(s);
       }
   }
Outputnya adalah:
Ini String Ini StringBuilder StringBuilder saya Ini StringBuilder StringBuilder saya Ini StringBuilder Ini String StringBuilder saya Ini StringBuilder Ini String
Kami membuat dua CharSequences, mengikat String dan StringBuilder ke keduanya dan mencetaknya. Kami tidak dapat menerapkan metode append() langsung ke myStringBuilder, karena CharSequence tidak memiliki metode ini (jika Anda tidak mengerti mengapa, Anda perlu mencari tahu tentang pewarisan serta memperluas dan mempersempit tipe referensi). Oleh karena itu, kami membuat StringBuilder dengan dan menggabungkan menggunakan metode append secara berurutan dengan kedua CharSequence. Pada akhirnya kami menambahkan StringBuilder kami dengan subsequence "is" ("i" adalah elemen ke-5 dari myStringBuilder dan s adalah yang ke-6. Ingat bahwa dalam metode ini, elemen yang ditentukan sebagai end dikecualikan dari subsequence.

Bagaimana dengan StringBuffer append()?

StringBuffer.append juga memiliki 13 varian metode dan cara kerjanya persis sama dengan StringBuilder.
  • publik StringBuffer menambahkan (boolean b)
  • tambahkan StringBuffer publik (char c)
  • publik StringBuffer menambahkan(char[] str)
  • publik StringBuffer menambahkan(char[] str, int offset, int len)
  • tambahkan StringBuffer publik (double d)
  • publik StringBuffer tambahkan (float f)
  • tambahkan StringBuffer publik (int i)
  • tambahkan StringBuffer publik (panjang lng)
  • tambahkan StringBuffer publik (CharSequence s)
  • publik StringBuffer tambahkan (CharSequence s, int start, int end)
  • publik StringBuffer menambahkan (Objek objek)
  • tambahkan StringBuffer publik (String str)
  • tambahkan StringBuffer publik (StringBuffer sb)
Mari kita contoh StringBuffer.append untuk menggabungkan substring. Kami hanya mengambil contoh StringBuilder dan mengubah semua StringBuilders dalam kode menjadi StringBuffers.

public class AppendDemo {
   // an example of using append(char[], cStr, int set, int length)

   public static void main(String[] args) {
       StringBuffer s = new StringBuffer("I love ");
      //here is a char's array, part of which we are going to append to s
       char[] cStr = new char[]
               {'c', 'o', 'd', 'e', 'J', 'a', 'v', 'a', '1', '4'};
       //we append 4 elements of cStr from the 4th element "J"
//with StringBuffer.append
       s.append(cStr, 4, 4);
       System.out.println(s);
//StringBuffer.append adds int 14 to s
s.append(14); 
System.out.println(s);
   }
}
Outputnya adalah:
Saya suka Java, saya suka Java14
Anda dapat melakukannya dengan setiap contoh artikel ini. Mereka akan bekerja!

Kesimpulan

Karena StringBuilder dan StringBuffer berbagi sebagian besar fungsi, tidak mengherankan jika kedua kelas memiliki cara yang sama untuk menggunakan metode append() . Itu kabar baik bagi pengembang — Anda tidak perlu mempelajari metode terpisah untuk setiap kelas. Karena itu, mengingat berbagai cara untuk menggunakan append() , pastikan untuk berlatih beberapa jam menambahkan representasi dari tipe data yang berbeda ke string.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION