ความแตกต่างระหว่าง String, StringBuffer และ StringBuilder ใน Java – ตัวอย่างที่แนบมา

เผยแพร่แล้ว: 2022-01-30
ความแตกต่างระหว่าง String, StringBuffer และ StringBuilder ใน Java - การเปรียบเทียบและตัวอย่างที่แนบมา

ในบทช่วยสอน Java นี้ เราจะพูดถึงความแตกต่างระหว่าง Java String, StringBuffer และ StringBuilder

มาเริ่มกันเลย:

สตริง:

คลาสสตริงแสดงถึงสตริงอักขระ ตัวอักษรสตริงทั้งหมดในโปรแกรม Java เช่น "crunchify" ถูกนำมาใช้เป็นอินสแตนซ์ของคลาสนี้ สตริงมีค่าคงที่ ค่าของพวกเขาไม่สามารถเปลี่ยนแปลงได้หลังจากสร้างแล้ว

บัฟเฟอร์สตริง:

ลำดับอักขระที่ปลอดภัยต่อเธรดและเปลี่ยนแปลงได้ บัฟเฟอร์สตริงเป็นเหมือนสตริง แต่สามารถแก้ไขได้

ณ จุดใดเวลาหนึ่ง มันมีลำดับของอักขระบางตัว แต่ความยาวและเนื้อหาของลำดับสามารถเปลี่ยนแปลงได้ผ่านการเรียกใช้เมธอดบางอย่าง

บัฟเฟอร์สตริงปลอดภัยสำหรับการใช้งานโดยหลายเธรด

ตัวสร้างสตริง:

ลำดับอักขระที่ไม่แน่นอน คลาสนี้จัดเตรียม API ที่เข้ากันได้กับ StringBuffer แต่ไม่มีการรับประกันการซิงโครไนซ์

คลาสนี้ได้รับการออกแบบเพื่อใช้แทนการแทนที่ StringBuffer ในตำแหน่งที่มีการใช้บัฟเฟอร์สตริงโดยเธรดเดียว (ตามปกติในกรณี)

หากเป็นไปได้ ขอแนะนำให้ใช้คลาสนี้มากกว่า StringBuffer เนื่องจากจะเร็วกว่าภายใต้การใช้งานส่วนใหญ่

มาเปรียบเทียบคุณลักษณะด้านล่างทั้งหมดของ String, StringBuffer และ StringBuilder

สตริง StringBuffer StringBuilder
เธรดปลอดภัย? ใช่ ใช่ ไม่
ซิงโครไนซ์? ใช่ ใช่ ไม่
ปรับเปลี่ยนได้? ไม่มี (ไม่เปลี่ยนรูป) ใช่ (เปลี่ยนแปลงได้) ใช่ (เปลี่ยนแปลงได้)
พื้นที่จัดเก็บ สระสตริง กอง กอง
ผลงาน ช้า เร็ว เร็วขึ้น

รหัสจาวา:

  • สร้างคลาส: CrunchifyStringVsStringBufferVsStringBuilder.java
  • ใส่โค้ดด้านล่างลงไป
  • บันทึกไฟล์

ในบทช่วยสอนนี้ เรากำลังเพิ่มการเพิ่ม โดยต่อท้ายสตริงทั้งหมด 199999 ครั้ง

ผลลัพธ์คอนโซล IntelliJ IDEA:

รันโปรแกรมด้านบนเป็น Java Application ใน IntelliJ IDEA หรือใน Eclipse Console แล้วคุณจะได้ผลดังนี้

แจ้งให้เราทราบหากคุณประสบปัญหาใดๆ ในการทำงานกับโปรแกรมข้างต้น หรือมีคำถามใดๆ ระหว่าง String, StringBuffer และ StringBuilder