สตริงไม่ใช่ประเภทง่าย ๆ แต่เป็นคลาสที่ใช้เพื่อแสดงลำดับของอักขระ ตัวละครเองปฏิบัติตามมาตรฐาน Unicode และมีสองวิธีในการเริ่มต้นพวกเขา
ตัวอย่างเช่น: การทักทายสตริง = "สวัสดีตอนเช้า! /n";
การทักทายสตริง = สตริงใหม่ (= "สวัสดีตอนเช้า! /n");
คุณลักษณะของสตริงคือเมื่อได้รับมอบหมายวัตถุตัวละครที่ชี้ให้ไม่สามารถเปลี่ยนแปลงได้
StringBuffer เป็นวัตถุสตริงที่มีคุณสมบัติของการอ้างอิงวัตถุผ่าน
วัตถุ StringBuffer สามารถเรียกใช้วิธีการของมันเพื่อเพิ่มการแทรกแก้ไขและลบการดำเนินงานแบบไดนามิกและไม่จำเป็นต้องระบุขนาดล่วงหน้าเช่นอาร์เรย์เพื่อให้ได้ผลของการแทรกอักขระหลายครั้ง ดังนั้นจึงมีความยืดหยุ่นและสะดวกในการใช้งานสตริง
เมื่อสตริงที่ต้องการสุดท้ายถูกสร้างขึ้นผ่าน StringBuffer มันสามารถเรียกได้ว่าวิธีการ ToString เพื่อแปลงเป็นวัตถุสตริง
ตำแหน่งของคลาสทั้งสองนี้ในการประมวลผลสตริงนั้นชัดเจนในตัวเอง มาอธิบายจากประเด็นต่อไปนี้
1. การเปรียบเทียบทั้งสองในแง่ของความเร็วในการดำเนินการ: StringBuffer> String
2.String <StringBuffer เหตุผลสตริง: สตริงค่าคงที่สตริงบัฟเฟอร์: ตัวแปรการสร้างอักขระจากชื่อด้านบนสตริงคือ "ค่าคงที่การสร้างอักขระ" นั่นคือวัตถุที่ไม่สามารถเปลี่ยนแปลงได้ คุณอาจมีคำถามเกี่ยวกับการทำความเข้าใจประโยคนี้เช่นรหัสนี้:
String S = "ABCD";
เห็นได้ชัดว่าเราเปลี่ยนตัวแปรสตริงทำไมมันไม่ได้เปลี่ยนแปลง? One Object S ถูกใช้เพื่อเรียกใช้รหัสบรรทัดที่สองซึ่งหมายความว่าวัตถุ S ไม่ได้เปลี่ยนแปลงมาก่อนดังนั้นเราจึงบอกว่าประเภทสตริงเป็นวัตถุที่ไม่สามารถเปลี่ยนแปลงได้ จริง ๆ แล้ววัตถุใหม่ถูกสร้างขึ้นอย่างต่อเนื่องและวัตถุต้นฉบับจะกลายเป็นขยะและรวบรวมโดย GC
แต่ StringBuffers นั้นแตกต่างกัน ความเร็วจะเร็วขึ้น
3. ตัวอย่างพิเศษ:
การคัดลอกรหัสมีดังนี้:
string str = "นี่เป็นเพียง" + "simple" + "test";
StringBuffer Builder = new StringBuilder ("นี่เป็นเพียง") ผนวก ("ง่าย"). ผนวก ("ทดสอบ");
คุณจะประหลาดใจที่พบว่าความเร็วในการสร้างวัตถุ STR นั้นเร็วเกินไปและในเวลานี้ StringBuffer ไม่มีข้อได้เปรียบใด ๆ ในความเร็วเลย ที่จริงแล้วนี่เป็นเคล็ดลับของ JVM ที่จริงแล้ว:
string str = "นี่เป็นเพียง" + "simple" + "test";
จริงๆ แล้ว:
string str =“ นี่เป็นเพียงการทดสอบอย่างง่าย”;
ดังนั้นจึงไม่ต้องใช้เวลามาก แต่สิ่งที่คุณควรทราบที่นี่คือถ้าสตริงของคุณมาจากวัตถุสตริงอื่นความเร็วไม่เร็วเช่น:
String str2 = "นี่เป็นเพียง" String str3 = "Simple";
ในเวลานี้ JVM จะทำมันในลักษณะปกติในแบบดั้งเดิม
4.StringBuilder และ StringBuffer
StringBuilder: StringBuffer ที่ไม่ปลอดภัย: เธรดที่ปลอดภัยเมื่อเราถูกใช้หลายเธรดในบัฟเฟอร์สตริง JVM ไม่สามารถรับประกันได้ว่าการทำงานของ StringBuilder นั้นปลอดภัย . ของ. แน่นอนในกรณีส่วนใหญ่เราทำงานภายใต้เธรดเดียวดังนั้นในกรณีส่วนใหญ่ขอแนะนำให้ใช้ StringBuilder แทน StringBuffer ซึ่งเป็นเหตุผลสำหรับความเร็ว
สรุปการใช้สาม:
1. หากคุณต้องการใช้ข้อมูลจำนวนเล็กน้อยให้ใช้ = สตริง
2. ใช้ข้อมูลจำนวนมากในบัฟเฟอร์สตริงเกลียวเดียว = StringBuilder
3. ใช้ข้อมูลจำนวนมากในบัฟเฟอร์สตริงแบบมัลติเธรด = StringBuffer