สตริงค่าคงที่
ตัวแปรสตริงสตริงสตริง (เธรดปลอดภัย)
ตัวแปร StringBuilder String (ไม่ปลอดภัย)
เพื่อให้ง่ายความแตกต่างของประสิทธิภาพหลักระหว่างประเภทสตริงและประเภทสตริงบัฟเฟอร์จริง ๆ แล้วสตริงเป็นวัตถุที่ไม่เปลี่ยนรูป ดังนั้นทุกครั้งที่คุณเปลี่ยนประเภทสตริงมันจะเทียบเท่ากับการสร้างวัตถุสตริงใหม่และชี้ตัวชี้ไปยังวัตถุสตริงใหม่ ดังนั้นจึงเป็นการดีที่สุดที่จะไม่ใช้สตริงสำหรับสตริงที่มักจะเปลี่ยนเนื้อหาเนื่องจากทุกครั้งที่วัตถุถูกสร้างขึ้นมันจะมีผลกระทบต่อประสิทธิภาพของระบบ โดยเฉพาะอย่างยิ่งเมื่อมีวัตถุอ้างอิงจำนวนมากเกินไปในหน่วยความจำ GC ของ JVM จะเริ่มทำงานซึ่งจะค่อนข้างช้า
หากคุณใช้คลาส StringBuffer ผลลัพธ์จะแตกต่างกัน ทุกครั้งที่ผลลัพธ์จะทำงานบนวัตถุ StringBuffer เองแทนที่จะสร้างวัตถุใหม่จากนั้นเปลี่ยนการอ้างอิงวัตถุ ดังนั้นโดยทั่วไปเราขอแนะนำให้ใช้ StringBuffer โดยเฉพาะอย่างยิ่งเมื่อวัตถุสตริงมีการเปลี่ยนแปลงบ่อยครั้ง ในบางกรณีพิเศษการประกบสตริงของวัตถุสตริงจะถูกตีความโดย JVM เป็นประกบของวัตถุสตริงบัฟเฟอร์ ดังนั้นความเร็วของวัตถุสตริงจึงไม่ช้ากว่าวัตถุ StringBuffer ในเวลาเหล่านี้ โดยเฉพาะอย่างยิ่งในการสร้างวัตถุสตริงต่อไปนี้ประสิทธิภาพของสตริงนั้นเร็วกว่า StringBuffer มาก:
String S1 = "นี่เป็นเพียง" + "Simple" + "Test";
StringBuffer SB = ใหม่ StringBuilder ("นี่เป็นเพียง") ผนวก ("ง่าย"). ผนวก ("ทดสอบ");
คุณจะประหลาดใจที่พบว่าความเร็วในการสร้างวัตถุสตริง S1 นั้นเร็วเกินไปและในเวลานี้ StringBuffer ไม่มีข้อได้เปรียบใด ๆ ในความเร็ว อันที่จริงนี่เป็นเคล็ดลับของ JVM ในสายตาของ JVM นี่
String S1 = "นี่เป็นเพียง" + "Simple" + "Test"; ในความเป็นจริงมันคือ:
String S1 = "นี่เป็นเพียงการทดสอบอย่างง่าย"; แน่นอนว่ามันไม่ได้ใช้เวลามากเกินไป แต่สิ่งที่คุณควรทราบที่นี่คือถ้าสตริงของคุณมาจากอื่น
สำหรับวัตถุสตริงความเร็วไม่เร็วเช่น:
String S2 =“ นี่เป็นเพียง A”;
สตริง s3 = "ง่าย";
สตริง s4 = "ทดสอบ";
String S1 = S2 + S3 + S4;
ในเวลานี้ JVM จะทำในลักษณะปกติในแบบดั้งเดิม
ในกรณีส่วนใหญ่ StringBuffer> String
สตริงบัฟเฟอร์
java.lang.StringBuffer ลำดับอักขระที่ไม่แน่นอน บัฟเฟอร์สตริงเหมือนสตริง แต่ไม่สามารถแก้ไขได้ แม้ว่ามันจะมีลำดับอักขระที่แน่นอน ณ เวลาใดก็ตามความยาวและเนื้อหาของลำดับสามารถเปลี่ยนแปลงได้โดยการเรียกวิธีการบางอย่าง
สามารถใช้บัฟเฟอร์สตริงได้อย่างปลอดภัยสำหรับหลายเธรด วิธีการเหล่านี้สามารถซิงโครไนซ์เมื่อจำเป็นดังนั้นการดำเนินการทั้งหมดในอินสแตนซ์ใด ๆ ดูเหมือนจะเกิดขึ้นในลำดับอนุกรมที่สอดคล้องกับลำดับของการเรียกวิธีการที่แต่ละเธรดที่เกี่ยวข้อง
การดำเนินการหลักของ StringBuffer คือวิธีการผนวกและแทรกซึ่งสามารถใช้งานได้มากเกินไปเพื่อรับข้อมูลทุกประเภท แต่ละวิธีสามารถแปลงข้อมูลที่กำหนดเป็นสตริงได้อย่างมีประสิทธิภาพจากนั้นผนวกหรือแทรกอักขระของสตริงนั้นลงในบัฟเฟอร์สตริง วิธีการภาคผนวกจะเพิ่มอักขระเหล่านี้ในตอนท้ายของบัฟเฟอร์เสมอ วิธีการแทรกเพิ่มอักขระที่จุดที่ระบุ
ตัวอย่างเช่นหาก Z หมายถึงวัตถุบัฟเฟอร์สตริงที่มีเนื้อหาปัจจุบันคือ "เริ่มต้น" วิธีนี้เรียกว่า z.append ("le") ทำให้บัฟเฟอร์สตริงมี "startle" และ z.insert (4, "le") เปลี่ยนบัฟเฟอร์สตริงเป็น "starlet"
ในกรณีส่วนใหญ่ StringBuilder> StringBuffer
java.lang.stringbuilde
Java.lang.StringBuilder ลำดับตัวแปรตัวแปรเป็นของใหม่ใน 5.0 คลาสนี้มี API ที่เข้ากันได้กับ StringBuffer แต่ไม่รับประกันว่าจะซิงโครไนซ์ คลาสนี้ได้รับการออกแบบให้เป็นตัวทดแทนอย่างง่ายสำหรับ StringBuffer เมื่อใช้บัฟเฟอร์สตริงโดยเธรดเดียว (นี่เป็นเรื่องธรรมดา) ถ้าเป็นไปได้ขอแนะนำให้เรียนคลาสนี้ก่อนเนื่องจากเร็วกว่า StringBuffer ในการใช้งานส่วนใหญ่ วิธีการของทั้งคู่นั้นเหมือนกัน
ข้างต้นเป็นการรวบรวมข้อมูลเกี่ยวกับสตริง Java, StringBuffer และ StringBuilder เราจะยังคงเพิ่มข้อมูลที่เกี่ยวข้องในอนาคต ขอบคุณสำหรับการสนับสนุนเว็บไซต์นี้!