Disyorkan, 2024

Pilihan Editor

Perbezaan antara String dan StringBuffer Class di Jawa

String dan StringBuffer kedua-duanya adalah kelas yang beroperasi pada rentetan. Kelas StringBuffer ialah kelas sebaya kelas String. Objek kelas String adalah panjang tetap. Objek kelas StringBuffer boleh digarap. Perbezaan asas antara String dan StringBuffer ialah objek kelas "String" tidak berubah . Objek kelas "StringBuffer" boleh berubah .

Carta Perbandingan

Asas untuk PerbandinganTaliStringBuffer
AsasPanjang objek String ditetapkan.Panjang StringBuffer dapat ditingkatkan.
PengubahsuaianObjek rentetan tidak berubah.Objek StringBuffer boleh berubah.
PrestasiIa lebih perlahan semasa penggabungan.Ia lebih cepat semasa penggabungan.
MemoriMemori lebih banyak.Memakan kurang ingatan.
PenyimpananKolam berterusan tali.Memori Heap.

Definisi String

"String" adalah kelas di Jawa. Objek kelas String adalah panjang tetap, dan yang paling penting untuk diingat, objek kelas String adalah "tidak berubah". Sebaik sahaja anda memulakan objek String, anda tidak boleh mengubah suai objek itu lagi. Objek kelas String disimpan dalam kolam berterusan String.

Mari kita mula-mula memahami bahawa, apabila anda membuat apa-apa rentetan; anda membuat objek rentetan jenis. Pemalar rentetan juga objek rentetan.

 System.out.println ("Hello this is Teckpix Solution"); 

Dalam pernyataan di atas, rentetan "Hello ini adalah Teckpix Solution" adalah pemalar String.

Sekarang marilah kita faham mutabilitas objek String dengan bantuan contoh.

 String str = String baru ("Teckpix"); str.concat ("Penyelesaian"); system.out.println (str); // output Teckpix 

Dalam kod di atas, saya cuba menggabungkan kedua-dua rentetan "Teckpix" dan "Penyelesaian". Seperti yang kita tahu setiap kali rentetan dibuat, bermakna objek jenis String dibuat. Oleh itu, rentetan "Teckpix" mencipta objek, yang rujukannya diberikan kepada objek rentetan "str". Seterusnya, saya cuba menggabungkan rentetan "Penyelesaian" rentetan dengan "Teckpix" rentetan menggunakan kaedah "concat ()" kelas String.

Oleh kerana objek String tidak berubah, tiada pengubahsuaian dilakukan pada rentetan "Teckpix" dan rentetan "Penyelesaian" baru mewujudkan objek lain dalam kolam berterusan rentetan. Tetapi, rujukan kepada objek "Penyelesaian" tidak ditangkap oleh mana-mana objek maka rujukan kepada objek Penyelesaian hilang walaupun ia masih terdapat dalam kolam berterusan rentetan. Oleh kerana tidak ada pengubahsuaian yang dilakukan kepada objek Teckpix, apabila saya mencetak objek str yang saya tunjuk rujukan Teckpix tadi, akan mencetak rentetan "Teckpix" sahaja.

Definisi StringBuffer

Kelas "StringBuffer" adalah kelas sebaya kelas "String". StringBuffer kelas menyediakan lebih banyak fungsi pada rentetan. Objek kelas StringBuffer boleh berubah yang objeknya boleh diubah suai. Panjang objek StringBuffer boleh dibesar-besarkan. Anda boleh memasukkan aksara atau substrings di tengah rentetan literal yang diberikan kepada objek StringBuffer atau pada akhirnya. StringBuffer memperuntukkan ruang untuk 16 aksara tambahan apabila tiada tempoh spesifik diperlukan.

Marilah kita faham mutabilitas objek StringBuffer dengan bantuan contoh:

 StringBuffre Sb = StringBuffer baru ("Teckpix"); Sb.append ("Penyelesaian"); system.out.println (Sb); // Penyelesaian Teckpix Solution 

Seperti yang kita tahu bahawa objek StringBuffer boleh berubah. Kaedah menambahkan () mengubah objek StringBuffer Sb yang pada mulanya, rujukan objek "Teckpix" ditugaskan sebelum ini. Kaedah append () menambahkan rentetan baru "Penyelesaian" literal, hingga akhir rentetan literal "Teckpix". Sekarang apabila saya mencetak objek Sb, ia akan mencetak objek rentetan diubahsuai "Teckpix Solutions".

Perbezaan Utama Antara String dan StringBuffer

  1. Panjang objek String tetap tetapi panjang objek StringBuffer dapat ditingkatkan apabila diperlukan.
  2. Objek rentetan tidak berubah sama ada objek itu tidak dapat ditugaskan semula sedangkan objek StringBuffer boleh berubah.
  3. Objek rentetan perlahan dalam prestasi sedangkan, objek StringBuffer lebih cepat.
  4. Objek rentetan menggunakan lebih banyak memori sedangkan, objek StringBuffer menggunakan memori yang kurang.
  5. Objek rentetan disimpan dalam kolam malar sedangkan, objek StringBuffer disimpan pada memori timbunan.

Kesimpulan:

Objek StringBuffer memberikan lebih banyak fungsi kepada rentetan berbanding dengan kelas String. Oleh itu, adalah lebih baik untuk bekerja dengan StringBuffer dan bukannya String kelas.

Top