StringBuffer และ StringBuilder ทั้งคู่เป็นคลาส mutable (เปลี่ยนแปลงได้) ใช้สำหรับดำเนินการกับออบเจ็กต์สตริง เช่น ย้อนกลับสตริง ต่อสตริง ฯลฯ เราสามารถแก้ไขสตริงได้โดยไม่ต้องสร้างออบเจ็กต์สตริงใหม่ StringBuffer เป็น thread-safe ส่วน StringBuilder ไม่ใช่ thread-safe ดังนั้นจึงเร็วกว่า StringBuffer นอกจากนี้ ตัวดำเนินการต่อสตริง + ภายในใช้คลาส StringBuffer หรือ StringBuilder ความแตกต่างดังต่อไปนี้
| ลำดับ | หัวข้อ | String Buffer | String Builder |
|---|---|---|---|
| 1 | พื้นฐาน | StringBuffer เปิดตัวมาพร้อมการเผยแพร่ Java เริ่มต้น | เปิดตัวใน Java 5 |
| 2 | Synchronized | เป็น synchronized (ปลอดภัยเธรด) | ไม่ใช่ synchronized (ไม่ปลอดภัยเธรด) |
| 3 | ประสิทธิภาพ | ปลอดภัยเธรด เธรดหลายตัวเข้าถึงพร้อมกันไม่ได้ จึงช้ากว่า | ไม่ปลอดภัยเธรด จึงเร็วกว่า StringBuffer |
| 4 | Mutable | เป็น mutable แก้ไขสตริงได้โดยไม่สร้างออบเจ็กต์ใหม่ | เป็น mutable เช่นกัน |
| 5 | ที่เก็บข้อมูล | Heap | Heap |
ตัวอย่าง StringBuilder
public class StringBuilderExample{
public static void main(String[] args){
StringBuilder builder = new StringBuilder("Hi");
builder.append("Java 8");
System.out.println("StringBuilderExample " + builder);
}
}ตัวอย่าง StringBuffer
public class StringBufferExample{
public static void main(String[] args){
StringBuffer buffer = new StringBuffer("Hi");
buffer.append("Java 8");
System.out.println("StringBufferExample " + buffer);
}
}