มีการดำเนินการสตริงสองชนิดใน Java: คลาสสตริงและคลาส StringBuffer (คลาสการประมวลผลสตริงบัฟเฟอร์)
มาพูดคุยสั้น ๆ เกี่ยวกับความแตกต่างระหว่างทั้งสอง
ทั้งคลาสสตริงและคลาส StringBuffer มีวิธีการที่สอดคล้องกันในการใช้งานสตริง แต่ทั้งสองนั้นแตกต่างกันเล็กน้อย
(1) คลาสสตริง
เมื่อคลาสนี้สร้างสตริงวัตถุของมันจะไม่เปลี่ยนรูป เนื้อหาและความยาวของคลาสสตริงได้รับการแก้ไข หากโปรแกรมจำเป็นต้องได้รับข้อมูลสตริงจำเป็นต้องเรียกใช้วิธีการทำงานของสตริงต่างๆที่จัดทำโดยระบบ แม้ว่าการดำเนินการสามารถนำไปใช้กับสตริงผ่านวิธีการต่างๆของระบบ แต่สิ่งนี้ไม่ได้เปลี่ยนอินสแตนซ์ของวัตถุเอง แต่สร้างอินสแตนซ์ใหม่ ระบบจัดสรรหน่วยความจำสำหรับวัตถุคลาสสตริงซึ่งจัดสรรตามจำนวนอักขระจริงที่มีอยู่ในวัตถุ
(2) คลาส StringBuffer
ฉันตรวจสอบบัฟเฟอร์คำซึ่งหมายถึงการบัฟเฟอร์และคลาสนี้จะต้องมีฟังก์ชั่นบัฟเฟอร์ คลาสนี้จัดการสตริงตัวแปร หากคุณต้องการแก้ไขสตริงคลาส StringBuffer คุณไม่จำเป็นต้องสร้างวัตถุสตริงใหม่ แต่ใช้งานสตริงต้นฉบับโดยตรง วิธีการทำงานของสตริงต่างๆของคลาสนี้แตกต่างจากที่ได้รับจากคลาสสตริง เมื่อระบบจัดสรรหน่วยความจำสำหรับคลาส StringBuffer นอกเหนือจากพื้นที่ที่ครอบครองโดยอักขระปัจจุบันมันยังให้บัฟเฟอร์อักขระเพิ่มเติม 16 ตัว แต่ละวัตถุ StringBuffer มีความจุบัฟเฟอร์ที่แน่นอน เมื่อขนาดสตริงไม่เกินความจุความจุใหม่จะไม่ถูกจัดสรร เมื่อขนาดสตริงเกินความจุความจุจะเพิ่มขึ้นโดยอัตโนมัติ
นี่คือตัวอย่างเฉพาะ
การเชื่อมต่อสตริง
มีสองวิธีสำหรับคลาสสตริง
ประเภทแรก ("+")
คลาสสาธารณะ str {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {string str1 = "เพิ่มเอฟเฟกต์พิเศษ!"; string str2 = "duang ~~"; System.out.println (str1+""+str2); -ประเภทที่สอง ("concat")
คลาสสาธารณะ str {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {string str1 = "เพิ่มเอฟเฟกต์พิเศษ!"; string str2 = "duang ~~"; System.out.println (str1.concat (str2)); -วิธีการของคลาส StringBuffer
คลาสสาธารณะ str {โมฆะสาธารณะคงที่หลัก (สตริง [] args) {// สร้างวัตถุที่บัฟเฟอร์สตริง SB StringBuffer SB = ใหม่ StringBuffer ("เพิ่มเอฟเฟกต์พิเศษ!"); // ใช้วิธีการผนวกเพื่อเพิ่มสตริงใหม่ sb.append ("duang ~~"); System.out.println (SB); -ผลลัพธ์ผลลัพธ์สุดท้ายคือ: เพิ่มเอฟเฟกต์พิเศษ! duang ~~
ไม่ยากที่จะเห็นจากตัวอย่างข้างต้นว่าเมื่อมีการขยายคลาสสตริงมันจำเป็นต้องใช้อินสแตนซ์สองวัตถุแต่ละวัตถุจะครอบครองหน่วยความจำจำนวนหนึ่ง คลาส StringBuffer ไม่จำเป็นต้องยกตัวอย่างคลาสใหม่ แต่ต้องเรียกใช้วิธีการขยายเท่านั้น
นอกจากนี้ยังมีจุดที่ความจุหน่วยความจำของคลาส Stringbuffer สามารถปรับขนาดได้ ลองยกตัวอย่างเฉพาะ:
คลาสสาธารณะ str {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {// ประกาศสตริงวัตถุ SB StringBuffer SB = ใหม่ StringBuffer (40); System.out.println (sb.capacity ()); // ความจุสตริงเอาท์พุท SB.EnsureCapacity (100); // ขยายระบบความจุ.out.println (sb.capacity ()); // ความจุสตริงเอาต์พุต}}วิธีความจุ () แสดงจำนวนวัตถุสตริงที่สามารถรองรับสตริงในหน่วยความจำ หากคุณต้องการขยายความจุหน่วยความจำคุณสามารถใช้วิธีการ ensurecapacity ()
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น