สตริงเป็นคลาสที่ไม่เปลี่ยนแปลง การใช้สตริงเพื่อแก้ไขสตริงจะสร้างวัตถุสตริงใหม่ หากมีการแก้ไขบ่อยครั้งวัตถุสตริงจำนวนมากจะถูกสร้างขึ้นซึ่งมีราคาแพงมาก ดังนั้น Java จึงมีคลาส StringBuffer ซึ่งมีประสิทธิภาพมากกว่าสตริงในการปรับเปลี่ยนสตริง
มี 3 คลาสใน Java ที่รับผิดชอบการดำเนินงานของตัวละคร
คลาสสาธารณะ usingStringBuffer { / *** ค้นหาสตริงการจับคู่* / โมฆะสาธารณะคงที่ testFindStr () {StringBuffer SB = new StringBuffer (); sb.append ("นี่คือสตริงบัฟเฟอร์"); // ส่งคืนตำแหน่งที่ substring ปรากฏขึ้นก่อนในสตริง หากไม่มีอยู่ให้ส่งคืนหมายเลขลบ System.out.println ("sb.indexof (/" คือ/") =" + sb.indexof ("คือ")); // ตั้งค่าพารามิเตอร์สำหรับวิธีการดัชนีและระบุตำแหน่งเริ่มต้นที่ตรงกัน System.out.println ("sb.indexof (/" is/") =" + sb.indexof ("คือ", 3)); // ส่งคืนตำแหน่งสุดท้ายของสตริงย่อยในสตริง หากไม่มีอยู่ให้ส่งคืนหมายเลขลบ System.out.println ("sb.lastindexof (/" คือ/") =" + sb.lastindexof ("คือ")); // ตั้งค่าพารามิเตอร์สำหรับเมธอด LastIndexof และระบุตำแหน่งตำแหน่งการจับคู่ระบบ. out.println ("sb.lastindexof (/" คือ/", 1) =" + sb.lastindexof ("คือ", 1)); } / *** สกัดกั้นสตริง* / โมฆะสาธารณะแบบคงที่ testSubstr () {StringBuffer SB = new StringBuffer (); sb.append ("นี่คือสตริงบัฟเฟอร์"); // ตำแหน่งการเลิกจ้างเริ่มต้นคือจุดสิ้นสุดของสตริง System.out.print ("sb.substring (4) =" + sb.substring (4)); // วิธีการย่อยสกัดกั้นสตริงซึ่งสามารถระบุตำแหน่งเริ่มต้นและตำแหน่งการเลิกจ้างของ System.out.out.print ("SB.Substring (4,9) =" + SB.SubString (4, 9)); } / ** * รับอักขระที่ตำแหน่งที่แน่นอนในสตริง * / โมฆะสาธารณะแบบคงที่ testCharatStr () {StringBuffer SB = ใหม่ StringBuffer ("นี่คือ StringBuffer"); System.out.println (sb.charat (sb.length () - 1)); } / *** เพิ่มข้อมูลประเภทต่าง ๆ ลงในหางของสตริง* / การทดสอบโมฆะแบบคงที่สาธารณะ () {StringBuffer SB = StringBuffer ใหม่ ("นี่คือ StringBuffer!"); SB.Append (1.23F); System.out.println (sb.toString ()); } / *** ลบข้อมูลในสตริง* / โมฆะสาธารณะคงที่ testDelete () {StringBuffer sb = new StringBuffer ("นี่คือ StringBuffer!"); sb.delete (0, 5); sb.deletecharat (sb.length () - 1); System.out.println (sb.toString ()); } / *** แทรกข้อมูลประเภทต่าง ๆ ลงในสตริง* / โมฆะแบบคงที่สาธารณะ testInsert () {StringBuffer SB = ใหม่ StringBuffer ("นี่คือ StringBuffer!"); // สามารถแทรกอักขระ, อาร์เรย์อักขระ, สตริงและตัวเลขต่าง ๆ และค่าบูลีนที่ตำแหน่งที่ระบุ sb.insert (2, 'w'); sb.insert (3, ถ่านใหม่ [] {'a', 'b', 'c'}); sb.insert (8, "abc"); sb.insert (2, 3); sb.insert (3, 2.3f); sb.insert (6, 3.75d); sb.insert (5, 9843L); sb.insert (2, true); System.out.println ("TestInsert:" + sb.toString ()); } / *** แทนที่อักขระบางตัวในสตริง* / โมฆะคงที่สาธารณะ testreplace () {stringbuffer sb = new StringBuffer ("นี่คือ StringBuffer!"); // แทนที่อักขระบางตัวในสตริงด้วยสตริงอื่น sb.replace (10, sb.length (), "จำนวนเต็ม"); System.out.println ("Testreplace:" + sb.toString ()); } / *** reverse string* / public static void reversestr () {stringbuffer sb = new StringBuffer ("นี่คือ StringBuffer!"); System.out.println (sb.reverse ()); // วิธีการย้อนกลับย้อนกลับสตริง}} สรุป:
StringBuffer ไม่ใช่คลาสที่ไม่เปลี่ยนแปลง เมื่อแก้ไขเนื้อหาของสตริงจะไม่มีการสร้างวัตถุใหม่ ดังนั้นจึงเหมาะสำหรับการปรับเปลี่ยนสตริงมากกว่าคลาสสตริง
คลาส StringBuffer ไม่ได้ให้วิธี ToCharArray เช่นเดียวกับสตริง
วิธีการแทนที่ของคลาส StringBuffer นั้นแตกต่างจากวิธีการแทนที่ของคลาสสตริง วิธีการแทนที่มีพารามิเตอร์สามตัว พารามิเตอร์แรกระบุตำแหน่งเริ่มต้นของสตริงย่อยที่ถูกแทนที่พารามิเตอร์ที่สองระบุตำแหน่งสิ้นสุดของสตริงย่อยที่ถูกแทนที่และพารามิเตอร์ที่สามระบุสตริงย่อยใหม่
ข้างต้นเป็นเรื่องเกี่ยวกับบทความนี้ฉันหวังว่ามันจะเป็นประโยชน์กับการเรียนรู้ของทุกคน