StringBuffer หรือ StringBuilder ไหนดีกว่ากัน?
StringBuffer หรือ StringBuilder ไหนดีกว่ากัน?

วีดีโอ: StringBuffer หรือ StringBuilder ไหนดีกว่ากัน?

วีดีโอ: StringBuffer หรือ StringBuilder ไหนดีกว่ากัน?
วีดีโอ: [Java] เปรียบเทียบ String โดยใช้เมธอด equals() 2024, อาจ
Anonim

สตริงไม่เปลี่ยนรูปในขณะที่ StringBuffer และ StringBuider เป็นคลาสที่เปลี่ยนแปลงได้ StringBuffer เป็นเธรดที่ปลอดภัยและซิงโครไนซ์ในขณะที่ StringBuilder ไม่ใช่ นั่นคือเหตุผลที่ StringBuilder เร็วกว่า StringBuffer . String concat + ตัวดำเนินการภายในใช้ StringBuffer หรือ StringBuilder ระดับ.

ตามลําดับ อันไหนดีกว่า StringBuffer หรือ StringBuilder

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

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

ดังนั้นอะไรคือความแตกต่างระหว่าง StringBuffer และ StringBuilder

StringBuilder . StringBuilder เหมือนกับ StringBuffer นั่นคือมันเก็บวัตถุในฮีปและยังสามารถแก้ไขได้ หลัก ความแตกต่างระหว่าง NS StringBuffer และ StringBuilder คือว่า StringBuilder ไม่ปลอดภัยสำหรับเธรด StringBuilder รวดเร็วเนื่องจากไม่ปลอดภัยสำหรับเธรด

ฉันควรใช้ StringBuffer เมื่อใด

หากค่า Object เปลี่ยนแปลงได้ และจะเข้าถึงได้จากเธรดเดียวเท่านั้น ใช้ StringBuilder เนื่องจาก StringBuilder ไม่ซิงโครไนซ์ ในกรณีที่ค่า Object สามารถเปลี่ยนแปลงได้และจะถูกแก้ไขโดยหลายเธรด ใช้ NS StringBuffer เพราะ StringBuffer มีการซิงโครไนซ์

แนะนำ: