String, StringBuffer และ StringBuilder ใน Java เป็นคลาสสตริงที่มักใช้ในการเขียนโปรแกรม เพื่อสรุปให้ดูที่ความแตกต่างและเหมือนกัน
1. ตัวแปรและไม่เปลี่ยนแปลง
คลาสสตริงใช้อาร์เรย์อักขระเพื่อบันทึกสตริง
ค่าถ่านสุดท้ายส่วนตัว [];
ทั้ง StringBuilder และ StringBuffer ได้รับการสืบทอดมาจากคลาส AbstringStringBuilder
ถ่าน [] ค่า;
2. ปลอดภัยหรือไม่?
วัตถุในสตริงนั้นไม่เปลี่ยนรูปซึ่งสามารถเข้าใจได้ว่าเป็นค่าคงที่เธรดที่เห็นได้ชัดว่าปลอดภัย
AbstractStringBuilder เป็นคลาสแม่สาธารณะระหว่าง StringBuilder และ StringBuffer การกำหนดตัวดำเนินการพื้นฐานของสตริงบางอย่างเช่น Expandcapacity, ผนวก, แทรก, ดัชนีและวิธีการสาธารณะอื่น ๆ
StringBuffer เพิ่มการล็อคแบบซิงโครนัสหรือวิธีการโทรถูกเพิ่มลงในวิธีการดังนั้นจึงเป็นเธรด -Safe ดูซอร์สโค้ดต่อไปนี้:
คัดลอกรหัสรหัสดังนี้:
Synchronized StringBuffer Reverse () {{) {
super.reverse ();
คืนสิ่งนี้;
-
ดัชนี int สาธารณะ (String str) {
return indexof (str, 0);
-
StringBuilder ไม่มีการล็อคแบบซิงโครนัสบนวิธีนี้ดังนั้นจึงไม่ใช่ความปลอดภัยที่ไม่ใช่เธรด
3. StringBuilder และ StringBuffer เหมือนกัน
StringBuilder และ StringBuffer มี PANTRIC PARTER -CLASS AbstractStringBuilder (คลาสนามธรรม)
หนึ่งในความแตกต่างระหว่างคลาสนามธรรมและอินเทอร์เฟซคือ: วิธีการสาธารณะบางอย่างของคลาสย่อยบางอย่างสามารถกำหนดได้ในคลาสนามธรรม ของวิธีการในอินเทอร์เฟซ
วิธีการของ StringBuilder และ StringBuffer ทั้งหมดเรียกวิธีการสาธารณะใน AbstractStringBuilder เช่น Super.Appending (... ) มันเป็นเพียงแค่สตริงบัฟเฟอร์จะเพิ่มคำหลักที่ซิงโครไนซ์ลงในวิธีการซิงโครไนซ์
ในที่สุดหากโปรแกรมไม่ได้มีหลายเธรดประสิทธิภาพของการใช้ StringBuilder นั้นสูงกว่า StringBuffer