วัตถุสตริงไม่สามารถเปลี่ยนแปลงได้ ทุกครั้งที่คุณใช้วิธีหนึ่งในคลาส System.string คุณต้องสร้างวัตถุสตริงใหม่ในหน่วยความจำซึ่งต้องมีการจัดสรรพื้นที่ใหม่สำหรับวัตถุใหม่ ค่าใช้จ่ายของระบบที่เกี่ยวข้องกับการสร้างวัตถุสตริงใหม่อาจมีราคาแพงมากในสถานการณ์ที่จำเป็นต้องมีการแก้ไขซ้ำ ๆ ในสตริง หากคุณต้องการแก้ไขสตริงโดยไม่ต้องสร้างวัตถุใหม่คุณสามารถใช้คลาส System.Text.StringBuilder ตัวอย่างเช่นการใช้คลาส StringBuilder สามารถปรับปรุงประสิทธิภาพเมื่อเชื่อมต่อหลายสตริงเข้าด้วยกันในลูป
โดยการเริ่มต้นตัวแปรด้วยวิธีตัวสร้าง overloaded อินสแตนซ์ใหม่ของคลาส StringBuilder สามารถสร้างได้ดังที่อธิบายไว้ในตัวอย่างต่อไปนี้
StringBuilder MyStringBuilder = new StringBuilder ("Hello World!");(i) ตั้งค่าความจุและความยาว
แม้ว่าวัตถุ StringBuilder เป็นวัตถุแบบไดนามิกที่อนุญาตจำนวนอักขระในสตริงที่ห่อหุ้มคุณสามารถระบุค่าสำหรับจำนวนอักขระสูงสุดที่สามารถเก็บได้ ค่านี้เรียกว่าความจุของวัตถุและไม่ควรสับสนกับความยาวของสตริงที่วัตถุสตริง builder ปัจจุบันเก็บไว้ ตัวอย่างเช่นคุณสามารถสร้างอินสแตนซ์ใหม่ของคลาส StringBuilder ด้วยสตริง "Hello" (ความยาว 5) ในขณะที่ระบุว่าความจุสูงสุดของวัตถุคือ 25 เมื่อมีการแก้ไข StringBuilder มันจะไม่จัดสรรพื้นที่สำหรับตัวเองจนกว่าจะถึงกำลังการผลิต เมื่อถึงความจุพื้นที่ใหม่จะได้รับการจัดสรรโดยอัตโนมัติและความจุจะเพิ่มเป็นสองเท่า คุณสามารถใช้หนึ่งในตัวสร้าง overloaded เพื่อระบุความสามารถของคลาส StringBuilder ตัวอย่างรหัสต่อไปนี้ระบุว่าวัตถุ MyStringBuilder สามารถขยายได้สูงสุด 25 ช่องว่าง
StringBuilderMyStringBuilder = new StringBuilder ("Hello World!", 25); นอกจากนี้ความยาวสูงสุดของวัตถุสามารถตั้งค่าได้โดยใช้คุณสมบัติการอ่าน/การเขียน ตัวอย่างรหัสต่อไปนี้ใช้คุณสมบัติความจุเพื่อกำหนดความยาวสูงสุดของวัตถุ
MyStringBuilder.Capacity = 25;
(ii) รายการต่อไปนี้มีวิธีการทั่วไปหลายวิธีของประเภทนี้:
(1) วิธีการผนวกสามารถใช้เพื่อเพิ่มการแสดงสตริงของข้อความหรือวัตถุไปยังจุดสิ้นสุดของสตริงที่แสดงโดยวัตถุสตริงปัจจุบัน ตัวอย่างต่อไปนี้เริ่มต้นวัตถุ StringBuilder เป็น "Hello World" จากนั้นผนวกข้อความบางส่วนไปยังจุดสิ้นสุดของวัตถุ พื้นที่จะได้รับการจัดสรรโดยอัตโนมัติตามต้องการ
StringBuilderMyStringBuilder = new StringBuilder ("Hello World!"); MyStringBuilder.Append ("ช่างเป็นวันที่สวยงาม"); Console.WriteLine (MyStringBuilder);ตัวอย่างนี้แสดง Hello World! วันที่ดีงาม ไปยังคอนโซล
(2) เมธอดภาคผนวกจะเพิ่มข้อความลงในตอนท้ายของ StringBuilder และใช้อินเทอร์เฟซ iformattable ดังนั้นจึงสามารถยอมรับสตริงรูปแบบมาตรฐานที่อธิบายไว้ในส่วนการจัดรูปแบบ คุณสามารถใช้วิธีนี้เพื่อปรับแต่งรูปแบบของตัวแปรและผนวกค่าเหล่านี้เข้ากับด้านหลังของ StringBuilder ตัวอย่างต่อไปนี้ใช้เมธอด AppendFormat เพื่อวางค่าจำนวนเต็มที่ตั้งค่าเป็นรูปแบบค่าสกุลเงินไปยังจุดสิ้นสุดของ Stringbuilder
int myint = 25; stringbuilder mystringBuilder = new StringBuilder ("ยอดรวมของคุณคือ"); myStringBuilder.AppendFormat ("{0: c}", myint); console.writeLine (mystringBuilder);ตัวอย่างนี้แสดงผลรวมของคุณคือ $ 25.00 ไปยังคอนโซล
(3) วิธีการแทรกเพิ่มสตริงหรือวัตถุไปยังตำแหน่งที่ระบุในสตริงปัจจุบัน ตัวอย่างต่อไปนี้ใช้วิธีนี้เพื่อแทรกคำลงในตำแหน่งที่หกของ StringBuilder
StringBuilderMyStringBuilder = new StringBuilder ("Hello World!"); MyStringBuilder.Insert (6, "Beautiful"); Console.WriteLine (MyStringBuilder);ตัวอย่างนี้แสดง Hello BeautifulWorld! ไปยังคอนโซล
(4) คุณสามารถใช้วิธีการลบเพื่อลบจำนวนอักขระที่ระบุออกจากสตริงปัจจุบันและกระบวนการลบเริ่มต้นจากดัชนีที่ระบุเริ่มต้นจากศูนย์ ตัวอย่างต่อไปนี้ใช้วิธีการลบเพื่อลดสตริง builder
StringBuilderMyStringBuilder = new StringBuilder ("Hello World!"); MyStringBuilder.remove (5,7); Console.WriteLine (MyStringBuilder);ตัวอย่างนี้แสดงสวัสดีต่อคอนโซล
(5) การใช้วิธีการแทนที่คุณสามารถแทนที่อักขระในวัตถุ StringBuilder ด้วยอักขระอื่นที่ระบุ ตัวอย่างต่อไปนี้ใช้วิธีการแทนที่เพื่อค้นหาวัตถุ StringBuilder ค้นหาอักขระเครื่องหมายอัศเจรีย์ทั้งหมด (!) และแทนที่ด้วยอักขระเครื่องหมายคำถาม (?)
StringBuilderMyStringBuilder = new StringBuilder ("Hello World!"); MyStringBuilder.replace ('!', '?'); Console.WriteLine (MyStringBuilder);ตัวอย่างนี้แสดง Hello World? ไปยังคอนโซล
getSqlMapClientTemplate (). QueryForList ((ใหม่ StringBuilder ()). ผนวก (entityclass.getName ()). ผนวก ("เลือก"). toString (), null);คลาส Stringbuilder ของ Java
หากโปรแกรมมีความต้องการบ่อยครั้งสำหรับสตริงเพิ่มเติมไม่แนะนำให้ใช้ + สำหรับการต่อสายของสตริง คุณสามารถพิจารณาใช้คลาส java.lang.stringbuilder วัตถุที่สร้างขึ้นโดยใช้คลาสนี้จะมีความยาว 16 อักขระตามค่าเริ่มต้น คุณยังสามารถระบุความยาวเริ่มต้นด้วยตัวเอง หากอักขระที่แนบมาเกินความยาวที่รองรับได้วัตถุ StringBuilder จะเพิ่มความยาวโดยอัตโนมัติเพื่อรองรับอักขระที่แนบมา หากมีความจำเป็นที่จะต้องแนบสตริงบ่อยครั้งการใช้คลาส StringBuilder สามารถปรับปรุงประสิทธิภาพได้อย่างมาก รหัสต่อไปนี้:
รหัส Java
คลาสสาธารณะต่อภาคผนวก {โมฆะสาธารณะคงที่หลัก (สตริง [] args) {สตริงข้อความ = ""; Long Begintime = System.currentTimeMillis (); สำหรับ (int i = 0; i <10,000; i ++) ข้อความ = text+i; endtime long = system.currentTimeMillis (); System.out.println ("เวลาดำเนินการ:" +(endtime-begintime)); StringBuilder sb = new StringBuilder (""); Begintime = System.currentTimeMillis (); สำหรับ (int i = 0; i <10,000; i ++) sb.append (string.valueof (i)); endtime = system.currentTimeMillis (); System.out.println ("เวลาดำเนินการ:" +(endtime-begintime)); }} คลาสสาธารณะภาคผนวก appendStringTest {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {String text = ""; Long Begintime = System.currentTimeMillis (); สำหรับ (int i = 0; i <10,000; i ++) ข้อความ = text+i; endtime long = system.currentTimeMillis (); System.out.println ("เวลาดำเนินการ:"+(endtime-begintime)); StringBuilder sb = new StringBuilder (""); Begintime = System.currentTimeMillis (); สำหรับ (int i = 0; i <10,000; i ++) sb.append (string.valueof (i)); endtime = system.currentTimeMillis (); System.out.println ("เวลาดำเนินการ:"+(endtime-begintime)); -รหัสนี้เอาต์พุต:
เวลาดำเนินการ: 3188
เวลาดำเนินการ: 15
StringBuilder เป็นคลาสใหม่ที่เพิ่มเข้ามาใน J2SE1.5.0 เท่านั้น หากเวอร์ชันก่อนหน้ามีข้อกำหนดเดียวกัน java.util.stringbuffer จะถูกใช้ ในความเป็นจริง StringBuilder ได้รับการออกแบบให้มีอินเทอร์เฟซการทำงานเช่นเดียวกับ StringBuffer การใช้ StringBuilder ในสถานการณ์ที่ไม่ใช่เธรดแบบสแตนด์อโลนจะมีประสิทธิภาพที่ดีขึ้นเนื่องจาก StringBuilder ไม่ได้จัดการกับปัญหาการซิงโครไนซ์ StringBuffer จะจัดการกับปัญหาการซิงโครไนซ์ หาก StringBuilder จะทำงานภายใต้หลายเธรดคุณควรใช้ StringBuffer แทนเพื่อให้วัตถุจัดการปัญหาการซิงโครไนซ์ด้วยตัวเอง
การวิเคราะห์สั้น ๆ ข้างต้นเกี่ยวกับการใช้งานของ Stringbuilder ใน Java เป็นเนื้อหาทั้งหมดที่ฉันแบ่งปันกับคุณ ฉันหวังว่ามันจะให้ข้อมูลอ้างอิงและฉันหวังว่าคุณจะสนับสนุน wulin.com มากขึ้น