ความแตกต่างระหว่าง String StringBuffer และ StringBuilder ใน Java

สารบัญ:

ความแตกต่างระหว่าง String StringBuffer และ StringBuilder ใน Java
ความแตกต่างระหว่าง String StringBuffer และ StringBuilder ใน Java

วีดีโอ: ความแตกต่างระหว่าง String StringBuffer และ StringBuilder ใน Java

วีดีโอ: ความแตกต่างระหว่าง String StringBuffer และ StringBuilder ใน Java
วีดีโอ: String vs StringBuilder vs StringBuffer | What is Immutability? | Java String Operations | Geekific 2024, กรกฎาคม
Anonim

ความแตกต่างที่สำคัญ – 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) จะตรวจสอบพูลค่าคงที่ของสตริง หากมีสตริงอยู่ การอ้างอิงไปยังพูลค่าคงที่ของสตริงจะถูกส่งกลับ หากเป็นสตริงใหม่ วัตถุนั้นจะถูกสร้างขึ้นในพูลค่าคงที่สตริง

ความแตกต่างระหว่าง String StringBuffer และ StringBuilder ใน Java
ความแตกต่างระหว่าง String StringBuffer และ StringBuilder ใน Java
ความแตกต่างระหว่าง String StringBuffer และ StringBuilder ใน Java
ความแตกต่างระหว่าง String StringBuffer และ StringBuilder ใน Java

รูปที่ 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

แนะนำ: