ความแตกต่างที่สำคัญ – String vs StringBuffer vs StringBuilder ใน Java
String, StringBuffer และ String Builder เป็นคลาสใน Java String ใช้กันอย่างแพร่หลายในการเขียนโปรแกรม Java เมื่อสร้างวัตถุของ String แล้ว จะไม่สามารถเปลี่ยนแปลงได้ ทุกครั้งที่มีการเปลี่ยนแปลงสตริง จะสร้างสตริงใหม่ แม้ว่าจะเป็นการต่อกับสตริงที่มีอยู่ จะสร้างสตริงใหม่ ทำให้เกิดการสูญเสียหน่วยความจำ คลาส StringBuffer และ StringBuilder ใน Java ใช้เพื่อแก้ไขสตริง ความแตกต่างที่สำคัญระหว่าง String, StringBuffer และ StringBuilder ใน Java คือ String เป็นคลาสที่สร้างวัตถุประเภท String ที่เป็นลำดับของอักขระ StringBuffer เป็นคลาสที่ใช้ในการแก้ไข Strings ที่ให้ความปลอดภัยของเธรด และ StringBuilder เป็น คลาสที่ใช้ในการแก้ไขสตริงที่ไม่มีความปลอดภัยของเธรด
สตริงใน Java คืออะไร
คลาสสตริงอยู่ในแพ็คเกจ java.lang ทุกครั้งที่โปรแกรมเมอร์สร้างสตริง จะเป็นวัตถุประเภทสตริง สตริงมีความหมายที่ไม่เปลี่ยนรูปเมื่อสร้างวัตถุแล้วจะไม่สามารถเปลี่ยนแปลงได้ อ็อบเจ็กต์ที่สร้างโดยใช้คลาสของ wrapper เช่น Integer, Byte, Float, Double นั้นจะไม่เปลี่ยนรูปเช่นกัน ตัวอักษรสตริงอยู่ในเครื่องหมายคำพูดคู่ เช่น. "สวัสดีชาวโลก". ทุกครั้งที่สร้างสตริงตามตัวอักษร Java Virtual Machine (JVM) จะตรวจสอบพูลค่าคงที่ของสตริง หากมีสตริงอยู่ การอ้างอิงไปยังพูลค่าคงที่ของสตริงจะถูกส่งกลับ หากเป็นสตริงใหม่ วัตถุนั้นจะถูกสร้างขึ้นในพูลค่าคงที่สตริง
รูปที่ 01: โปรแกรม Java ที่ใช้ String, StringBuffer และ StringBuilder
ดูโค้ดด้านล่าง
String s1=“สวัสดี”;
s1=s1 + “โลก”;
System.out.println(s1);
ในประโยคแรก s1 หมายถึง “สวัสดี” ในกลุ่มค่าคงที่สตริง ในคำสั่งที่สอง JVM จะไม่เปลี่ยนสตริงที่มีอยู่ แต่จะสร้างสตริงใหม่เป็น "Hello World" และตอนนี้ s1 หมายถึงสตริงใหม่นั้น ออบเจ็กต์ “Hello” ที่ออกมายังคงมีอยู่ในพูลค่าคงที่ของ String
หากมีรหัสคือ
String s1=”สวัสดี”;
สตริง s2=s1;
s1, s2 ทั้งคู่จะอ้างถึงวัตถุสตริง “สวัสดี”
StringBuffer ใน Java คืออะไร
StringBuffer คลาสใช้เพื่อทำให้อ็อบเจ็กต์ String เปลี่ยนแปลงได้ ดังนั้นวัตถุเหล่านั้นสามารถแก้ไขได้ StringBuffer กำหนดสี่ตัวสร้าง StringBuffer(), StringBuffer(ขนาด int), StringBuffer(String str), StringBuffer (charSequence ch)
ดูโค้ดด้านล่าง
StringBuffer s1=ใหม่ StringBuffer(“สวัสดี”);
s1.append(“โลก”);
System.out.println(s1);
ในคำสั่งที่ 1 s1 หมายถึงอ็อบเจกต์ “Hello” ในฮีป อ็อบเจ็กต์เปลี่ยนแปลงได้เนื่องจากสร้างโดยใช้ StringBuffer ในคำสั่งที่ 2 “World” ถูกต่อท้ายวัตถุสตริง “Hello” เดียวกัน
สตริงวัตถุที่สร้างด้วยคลาส StringBuffer สามารถบันทึกหน่วยความจำได้ StringBuffer ให้ความปลอดภัยของเธรดเนื่องจากสองเธรดไม่สามารถเข้าถึงเมธอดเดียวกันในคลาส StringBuffer พร้อมกันได้ ความปลอดภัยของเธรดลดประสิทธิภาพของ StringBuffer คลาส StringBuffer มีเมธอดเช่น append(), insert(), reverse(), replace().
StringBuilder ใน Java คืออะไร
StringBuilder คลาสใช้เพื่อทำให้อ็อบเจ็กต์ String เปลี่ยนแปลงได้ ดังนั้นวัตถุเหล่านั้นสามารถแก้ไขได้ ฟังก์ชันการทำงานคล้ายกับ StringBuffer แต่ไม่มีความปลอดภัยของเธรดStringBuilder มีตัวสร้างเช่น StringBuilder(), StringBuilder(ขนาด int), StringBuilder(String str).
ดูโค้ดด้านล่าง
StringBuilder s1=StringBuilder ใหม่(“สวัสดี”);
s1.append(“โลก”);
System.out.println(s1);
ในคำสั่งที่ 1 s1 หมายถึงอ็อบเจกต์ “Hello” ในฮีป อ็อบเจ็กต์นี้เปลี่ยนแปลงได้เนื่องจากถูกสร้างโดยใช้ StringBuilder ในคำสั่งที่ 2 "World" ถูกผนวกเข้ากับอ็อบเจกต์สตริง "Hello" เดียวกัน ไม่มีการสร้างวัตถุสตริงใหม่อย่างสมบูรณ์
สตริงวัตถุที่สร้างด้วยคลาส StringBuilder สามารถบันทึกหน่วยความจำได้ ไม่เหมือนกับ StringBuffer เพราะ StringBuilder ไม่มีความปลอดภัยของเธรด เนื่องจากสองเธรดสามารถเข้าถึงวิธีการเดียวกันในคลาส StringBuilder ได้พร้อมกัน คลาส StringBuilder มีเมธอดเช่น append(), insert(), reverse(), replace().
ความคล้ายคลึงกันระหว่าง String, StringBuffer และ StringBuilder ใน Java คืออะไร
ทั้งหมดใช้สร้างสตริงได้
อะไรคือความแตกต่างระหว่าง String StringBuffer และ StringBuilder ใน Java
String vs StringBuffer vs StringBuilder |
|
สตริง | สตริงคือคลาส Java ที่ใช้สร้างอ็อบเจ็กต์ประเภท String ซึ่งเป็นลำดับของอักขระ |
สตริงบัฟเฟอร์ | StringBuffer เป็นคลาส Java ที่ใช้สร้างวัตถุ String ซึ่งสามารถแก้ไขได้ด้วยความปลอดภัยของเธรด |
StringBuilder | StringBuilder เป็นคลาสที่ใช้สร้างออบเจ็กต์สตริง ซึ่งสามารถแก้ไขได้โดยไม่ต้องใช้ความปลอดภัยของเธรด |
การเปลี่ยนแปลง | |
สตริง | สตริงเป็นคลาสที่ไม่เปลี่ยนรูป |
สตริงบัฟเฟอร์ | StringBuffer เป็นคลาสที่เปลี่ยนแปลงได้ |
StringBuilder | StringBuilder เป็นคลาสที่เปลี่ยนแปลงได้ |
ความปลอดภัยของเธรด | |
สตริง | วิธีการร้อยเชือกนั้นปลอดภัยสำหรับเธรด |
สตริงบัฟเฟอร์ | วิธีการของ StringBuffer นั้นปลอดภัยสำหรับเธรดและซิงโครไนซ์ |
StringBuilder | วิธีการของ StringBuilder นั้นไม่ปลอดภัยสำหรับเธรดและไม่มีการซิงโครไนซ์ |
ประสิทธิภาพ | |
สตริง | สายเร็ว |
สตริงบัฟเฟอร์ | StringBuffer ช้า |
StringBuilder | StringBuilder รวดเร็ว |
สรุป – String vs StringBuffer vs StringBuilder ใน Java
String, StringBuffer และ StringBuilder ดูเหมือนจะเหมือนกัน แต่มีความหมายต่างกัน ทั้งหมดนี้เป็นคลาส Java ความแตกต่างระหว่าง String, StringBuffer และ StringBuilder ใน Java คือ String เป็นคลาสที่สร้างวัตถุประเภท String ซึ่งเป็นชุดของอักขระ StringBuffer เป็นคลาสที่ใช้ในการแก้ไข Strings และให้ความปลอดภัยของเธรด ในขณะที่ StringBuilder เป็น คลาสที่ใช้ในการแก้ไข Strings ซึ่งไม่มีความปลอดภัยของเธรด
ดาวน์โหลด PDF String vs StringBuffer vs StringBuilder ใน Java
คุณสามารถดาวน์โหลดไฟล์ PDF ของบทความนี้และใช้เพื่อวัตถุประสงค์ออฟไลน์ตามหมายเหตุอ้างอิง โปรดดาวน์โหลดเวอร์ชัน PDF ที่นี่ ความแตกต่างระหว่าง String StringBuffer และ StringBuilder ใน Java