คลาส
พิจารณารหัสด้านล่าง:
String
สร้างสตริงที่ไม่เปลี่ยนรูป ซึ่งหมายความว่าหากคุณใช้การดำเนินการใดๆ กับสตริงหรือการดำเนินการกับสตริง ผลลัพธ์จะเป็นสตริงใหม่ หากไม่ได้กำหนดสตริงใหม่นี้ให้กับตัวแปรใดๆ ผลลัพธ์ของการดำเนินการจะหายไป ดังนั้น การดำเนินการกับสตริงดังกล่าวจำเป็นต้องนำไปสู่การสร้างสตริงใหม่ และนี่หมายถึงต้นทุนหน่วยความจำและเวลาในการประมวลผลเพิ่มเติม หากมีการดำเนินการกับสตริงเป็นจำนวนมาก ก็มักจะมีประสิทธิภาพมากกว่าในการใช้สตริงไดนามิก ซึ่งคลาสนำไปใช้StringBuilder
งาน
String s = "Some text";
int count = 100;
for(int i = 0; i<100;i++){
s+=i;
}
**********************
StringBuilder s = new StringBuilder(110);
int count = 100;
s.append("Some text");
for(int i = 0;i<count;i++){
s.append(i);
}
รหัสข้างต้นแก้ไขปัญหาเดียวกัน เมื่อเราเพิ่มสตริงย่อยใหม่ 100 รายการให้กับสตริงที่กำหนด ตัวอย่างแรกใช้คลาสเพื่อจุดประสงค์นี้String
ซึ่งไม่มีประสิทธิภาพมากนัก เนื่องจากการเพิ่มสตริงย่อยแต่ละครั้งจะนำไปสู่การสร้างอ็อบเจ็กต์String
ใหม่ และนี่เป็นการสิ้นเปลืองหน่วยความจำและเวลาเพิ่มเติม StringBuilder
ในตัวอย่างที่ สองปัญหานี้แก้ไขได้โดยใช้คลาส เราสร้างวัตถุของคลาสล่วงหน้าStringBuilder
จากนั้นใช้วิธีการappend
ที่เราสร้างสตริงที่เราต้องการโดยการเปลี่ยนเนื้อหาของวัตถุที่สร้างขึ้นStringBuilder
แต่ไม่มีการสร้างวัตถุขึ้นมาใหม่
GO TO FULL VERSION