แผนภูมิเปรียบเทียบ
พื้นฐานสำหรับการเปรียบเทียบ | เชือก | StringBuffer |
---|---|---|
ขั้นพื้นฐาน | ความยาวของวัตถุสตริงได้รับการแก้ไข | ความยาวของ StringBuffer สามารถเพิ่มขึ้นได้ |
การแก้ไข | วัตถุสตริงไม่เปลี่ยนรูป | วัตถุ StringBuffer ไม่แน่นอน |
ประสิทธิภาพ | มันช้าลงในระหว่างการต่อข้อมูล | มันเร็วกว่าในระหว่างการต่อข้อมูล |
หน่วยความจำ | สิ้นเปลืองหน่วยความจำมากขึ้น | ใช้หน่วยความจำน้อยลง |
การเก็บรักษา | สตริงพูลคงที่ | หน่วยความจำฮีป |
คำจำกัดความของ String
“ String” เป็นคลาสใน Java วัตถุของคลาสสตริงมีความยาวคงที่และที่สำคัญที่สุดต้องจดจำวัตถุของคลาสสตริงคือ "ไม่เปลี่ยนรูป" เมื่อคุณเริ่มต้นวัตถุ String คุณจะไม่สามารถแก้ไขวัตถุนั้นได้อีก วัตถุของคลาส String ถูกเก็บไว้ใน String ค่าคงที่พูล
ให้เราเข้าใจก่อนว่าเมื่อใดก็ตามที่คุณสร้างสตริงใด ๆ คุณสร้างวัตถุประเภทสตริง ค่าคงที่สตริงยังเป็นวัตถุสตริง
System.out.println ("สวัสดีนี่คือ Teckpix Solution");
ในข้อความข้างต้นสตริง“ Hello this is Teckpix Solution” เป็นค่าคงที่สตริง
ตอนนี้ให้เราเข้าใจความแปรปรวนของวัตถุ String ด้วยความช่วยเหลือของตัวอย่าง
String str = new String ("Teckpix"); str.concat ( "โซลูชั่น"); system.out.println (str); // Teckpix เอาท์พุท
ในโค้ดด้านบนฉันพยายามเชื่อมสองสาย "Teckpix" และ "ทางออก" เข้าด้วยกัน ดังที่เราทราบเมื่อใดก็ตามที่มีการสร้างสตริงซึ่งหมายความว่าวัตถุประเภทสตริงจะถูกสร้างขึ้น ดังนั้นสตริง“ Teckpix” จึงสร้างวัตถุซึ่งการอ้างอิงถูกกำหนดให้กับวัตถุสตริง“ str” ต่อไปฉันพยายามเชื่อมสตริงอื่น“ โซลูชัน” กับสตริง“ Teckpix” โดยใช้วิธี“ concat ()” ของสตริงคลาส
ความหมายของ StringBuffer
คลาส“ StringBuffer” เป็นคลาสเพียร์ของคลาส“ String” คลาส StringBuffer จัดเตรียมฟังก์ชันการทำงานเพิ่มเติมให้กับสตริง วัตถุของคลาส StringBuffer ไม่แน่นอนซึ่งเป็นวัตถุที่สามารถแก้ไขได้ ความยาวของวัตถุ StringBuffer สามารถเติบโตได้ คุณสามารถแทรกอักขระหรือสตริงย่อยตรงกลางสตริงตัวอักษรที่กำหนดให้กับวัตถุ StringBuffer หรือที่ส่วนท้ายของมัน StringBuffer จัดสรรพื้นที่สำหรับ 16 อักขระเพิ่มเติมเมื่อไม่มีการร้องขอความยาวที่เฉพาะเจาะจง
ให้เราเข้าใจความผันแปรของวัตถุ StringBuffer ด้วยความช่วยเหลือของตัวอย่าง:
StringBuffre Sb = ใหม่ StringBuffer ("Teckpix"); Sb.append ( "โซลูชั่น"); system.out.println (Sb); // ทางออก Teckpix ทางออก
ที่เรารู้ว่าวัตถุ StringBuffer ไม่แน่นอน วิธีการผนวก () แก้ไขวัตถุ StringBuffer Sb ซึ่งเริ่มแรกการอ้างอิงของวัตถุ” Teckpix” ได้รับมอบหมายก่อนหน้านี้ วิธีการต่อท้าย () ผนวกตัวอักษรสตริงใหม่ "โซลูชั่น" ที่ส่วนท้ายของตัวอักษรสตริง "Teckpix" ตอนนี้เมื่อฉันพิมพ์วัตถุ Sb มันจะพิมพ์วัตถุสตริงดัดแปลง“ Teckpix Solutions”
ความแตกต่างที่สำคัญระหว่าง String และ StringBuffer
- ความยาวของวัตถุ String ได้รับการแก้ไข แต่ความยาวของวัตถุของ StringBuffer สามารถเพิ่มได้เมื่อต้องการ
- วัตถุ String นั้นไม่เปลี่ยนรูปนั่นคือมันไม่สามารถกำหนดค่าวัตถุอีกครั้งในขณะที่วัตถุของ StringBuffer ไม่แน่นอน
- วัตถุสตริงทำงานช้าลงในขณะที่วัตถุ StringBuffer เร็วขึ้น
- วัตถุ String ใช้หน่วยความจำเพิ่มเติมในขณะที่วัตถุ StringBuffer ใช้หน่วยความจำน้อยลง
- วัตถุสตริงจะถูกเก็บไว้ในพูลคงที่ในขณะที่วัตถุ StringBuffer จะถูกเก็บไว้ในหน่วยความจำฮีป
สรุป:
วัตถุ StringBuffer ให้ฟังก์ชันการทำงานเพิ่มเติมกับสายอักขระเมื่อเปรียบเทียบกับคลาสตริง ดังนั้นจึงควรทำงานกับ StringBuffer แทนคลาส String