1. การปรับเปลี่ยนสตริง
ใน Java สตริงเป็นวัตถุที่ไม่เปลี่ยนรูปแบบ สิ่งนี้ทำขึ้นเพื่อทำให้คลาส String ได้รับการปรับให้เหมาะสมที่สุดและเพื่อให้สามารถใช้งานได้ทุกที่ ตัวอย่างเช่น แนะนำให้ใช้เฉพาะประเภทที่ไม่เปลี่ยน รูปแบบเป็นคีย์ในคอลเล็กชัน HashMap
อย่างไรก็ตาม สถานการณ์มักจะเกิดขึ้นเมื่อโปรแกรมเมอร์พบว่าสะดวกกว่าสำหรับString
คลาสที่ไม่แน่นอน พวกเขาต้องการคลาสที่ไม่สร้างสตริงย่อยใหม่ทุกครั้งที่เรียกใช้เมธอด
สมมติว่าเรามีสตริงขนาดใหญ่มากและเราต้องเพิ่มบางสิ่งที่ส่วนท้ายของสตริงบ่อยๆ ในกรณีนี้ แม้แต่ชุดของอักขระ ( ArrayList<Character>
) ก็สามารถมีประสิทธิภาพมากกว่าการสร้างและต่อออบเจกต์สตริงใหม่อย่างต่อเนื่อง
นั่นเป็นเหตุผลว่าทำไมจึงมีการเพิ่มประเภทที่เหมือนสตริงที่สามารถเปลี่ยนแปลงได้ในภาษา Java เรียกว่าStringBuilder
.
การสร้างวัตถุ
หากต้องการสร้างStringBuilder
วัตถุตามสตริงที่มีอยู่ คุณต้องใช้คำสั่งเช่น:
StringBuilder name = new StringBuilder(string);
หากต้องการสร้างสตริงที่ไม่แน่นอนที่ว่างเปล่า คุณต้องใช้คำสั่งดังนี้:
StringBuilder name = new StringBuilder();
รายการวิธีการ
ชั้น เรียนStringBuilder
มีวิธีที่เป็นประโยชน์สองโหล นี่คือสิ่งที่สำคัญที่สุด:
วิธี | คำอธิบาย |
---|---|
|
แปลงออบเจกต์ที่ผ่านเป็นสตริงแล้วผนวกเข้ากับสตริงปัจจุบัน |
|
แปลงออบเจกต์ที่ผ่านเป็นสตริงและแทรกลงในสตริงปัจจุบัน |
|
แทนที่ส่วนของสตริงที่ระบุโดยช่วง start..end ด้วยสตริงที่ผ่าน |
|
ลบอักขระที่มีดัชนีที่ระบุออกจากสตริง |
|
ลบอักขระภายในช่วงเวลาที่กำหนดออกจากสตริง |
|
ค้นหาสตริงย่อยในสตริงปัจจุบัน |
|
ค้นหาสตริงย่อยในสตริงปัจจุบัน โดยเริ่มจากจุดสิ้นสุด |
|
ส่งกลับอักขระในสตริงที่ดัชนีที่ผ่าน |
|
ส่งกลับสตริงย่อยที่กำหนดโดยช่วงเวลาที่ระบุ |
|
ย้อนกลับสตริงปัจจุบัน |
|
เปลี่ยนอักขระที่ดัชนีที่ระบุเป็นอักขระที่ผ่าน |
|
ส่งกลับความยาวของสตริงเป็นตัวอักษร |
นี่คือคำอธิบายสั้น ๆ ของแต่ละวิธี
2. คำอธิบายของวิธีการ:
ต่อท้ายสตริง
หากต้องการเพิ่มบางสิ่งในสตริงที่ไม่แน่นอน ( StringBuilder
) ให้ใช้append()
เมธอด ตัวอย่าง:
รหัส | คำอธิบาย |
---|---|
|
|
แปลงเป็นสตริงมาตรฐาน
ในการแปลงStringBuilder
อ็อบเจกต์เป็นอ็อบเจกต์ String คุณต้องเรียกใช้toString()
เมธอด ของมัน ตัวอย่าง
รหัส | เอาต์พุต |
---|---|
|
|
ฉันจะลบตัวละครได้อย่างไร?
หากต้องการลบอักขระในสตริงที่ไม่แน่นอน คุณต้องใช้deleteCharAt()
วิธีการ ตัวอย่าง:
รหัส | เอาต์พุต |
---|---|
|
|
ฉันจะแทนที่ส่วนหนึ่งของสตริงด้วยสตริงอื่นได้อย่างไร
สำหรับสิ่งนี้มีreplace(int begin, int end, String str)
วิธีการ ตัวอย่าง:
รหัส | เอาต์พุต |
---|---|
|
|
3. ตัวอย่างที่เป็นประโยชน์ของการทำงานกับสตริง
ฉันจะย้อนกลับสตริงได้อย่างไร
มีวิธีพิเศษในการทำเช่นนี้ — reverse()
; ตัวอย่าง:
รหัส | เอาต์พุต |
---|---|
|
|
StringBuffer
ระดับ
มีอีกคลาสหนึ่ง — StringBuffer ซึ่งเป็นอะนาล็อกของStringBuilder
คลาส แต่วิธีการของมันจะถูกทำเครื่องหมายด้วยตัวsynchronized
ดัดแปลง หมายความว่าStringBuffer
สามารถเข้าถึงวัตถุได้พร้อมกันจากหลายเธรด
แต่ช้ากว่าStringBuilder
มาก คุณอาจต้องใช้คลาสนี้เมื่อคุณเริ่มสำรวจมัลติเธรดในภารกิจJava Multithreading
GO TO FULL VERSION