Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

ความแตกต่างระหว่าง String และ StringBuffer


สตริงเป็นคลาสที่ไม่เปลี่ยนรูปแบบ และไม่สามารถแก้ไขได้หลังจากสร้างแล้ว แต่จะอ้างอิงถึงวัตถุอื่นอย่างแน่นอน มีประโยชน์มากในสภาพแวดล้อมแบบมัลติเธรดเนื่องจากหลายเธรดไม่สามารถเปลี่ยนสถานะของอ็อบเจ็กต์ได้ ดังนั้นอ็อบเจ็กต์ที่ไม่เปลี่ยนรูปจึงปลอดภัยสำหรับเธรด

บัฟเฟอร์สตริงเป็นคลาสที่เปลี่ยนแปลงได้ซึ่งสามารถใช้เพื่อดำเนินการกับวัตถุสตริงเช่นการย้อนกลับของสตริง การต่อสตริงและอื่น ๆ เราสามารถแก้ไขสตริงโดยไม่ต้องสร้างวัตถุใหม่ของสตริง บัฟเฟอร์สตริงยังปลอดภัยสำหรับเธรด

นอกจากนี้ ตัวดำเนินการ 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);
   }
}