สตริงเป็นคลาสที่ไม่เปลี่ยนรูปแบบ และไม่สามารถแก้ไขได้หลังจากสร้างแล้ว แต่จะอ้างอิงถึงวัตถุอื่นอย่างแน่นอน มีประโยชน์มากในสภาพแวดล้อมแบบมัลติเธรดเนื่องจากหลายเธรดไม่สามารถเปลี่ยนสถานะของอ็อบเจ็กต์ได้ ดังนั้นอ็อบเจ็กต์ที่ไม่เปลี่ยนรูปจึงปลอดภัยสำหรับเธรด
บัฟเฟอร์สตริงเป็นคลาสที่เปลี่ยนแปลงได้ซึ่งสามารถใช้เพื่อดำเนินการกับวัตถุสตริงเช่นการย้อนกลับของสตริง การต่อสตริงและอื่น ๆ เราสามารถแก้ไขสตริงโดยไม่ต้องสร้างวัตถุใหม่ของสตริง บัฟเฟอร์สตริงยังปลอดภัยสำหรับเธรด
นอกจากนี้ ตัวดำเนินการ string concat + ภายในยังใช้คลาส StringBuffer หรือ StringBuilder ด้านล่างนี้คือข้อแตกต่าง
| ซีเนียร์ เลขที่ | คีย์ | สตริง | StringBuffer |
|---|---|---|---|
| 1 | พื้นฐาน | สตริงเป็นคลาสที่ไม่เปลี่ยนรูปแบบและไม่สามารถแก้ไขได้หลังจากสร้างแล้ว | สตริงบัฟเฟอร์เป็นคลาสที่เปลี่ยนแปลงได้ซึ่งสามารถใช้เพื่อดำเนินการกับอ็อบเจกต์สตริง |
| 2 | วิธีการ | วิธีการไม่ซิงโครไนซ์ | วิธีการทั้งหมดจะถูกซิงโครไนซ์ในคลาสนี้ |
| 3 | ประสิทธิภาพ | มันเร็ว | ไม่สามารถเข้าถึงหลายเธรดพร้อมกันได้จึงช้า |
| 4. | พื้นที่หน่วยความจำ | ถ้าสตริงถูกสร้างขึ้นโดยใช้ตัวสร้างหรือเมธอด จากนั้นสตริงเหล่านั้นจะถูกเก็บไว้ใน Heap Memory เช่นเดียวกับ SringConstantPool | ฮีปสเปซ |
ตัวอย่างสตริง
public class Main {
public static void main(String args[]) {
String s1 = "Hello Tutorials Point";
String upperCase = s1.toUpperCase();
System.out.println(upperCase);
}
} ตัวอย่าง StringBuffer
public class StringBufferExample{
public static void main(String[] args){
StringBuffer buffer=new StringBuffer("Hi");
buffer.append("Java 8");
System.out.println("StringBufferExample" +buffer);
}
}