โค้ดยิม/จาวาบล็อก/สุ่ม/วิธีการผนวก () ใน Java: StringBuilder และ StringBuffer
John Squirrels
ระดับ
San Francisco

วิธีการผนวก () ใน Java: StringBuilder และ StringBuffer

เผยแพร่ในกลุ่ม
ผนวก ()เป็นวิธีการ Java ของคลาส StringBuilder และ StringBuffer ที่ต่อท้ายค่าบางอย่างในลำดับปัจจุบัน แม้ว่าคุณจะไม่ทราบว่า วิธี การผนวก ()คืออะไร แต่คุณอาจใช้มันโดยปริยาย สิ่งนี้เกิดขึ้นเมื่อคุณเชื่อมสตริงใน Java โดยใช้ตัวดำเนินการ + ประเด็นก็คือการต่อสตริงใน Java นั้นถูกนำไปใช้โดยใช้คลาส StringBuilder หรือ StringBuffer และเมธอดappend ()

สั้น ๆ เกี่ยวกับ String, StringBuffer และ StringBuilder

อย่างที่คุณคงทราบดีว่าคลาส String เป็นคลาสสุดท้าย (ไม่มีคลาสลูก) และไม่เปลี่ยนรูป (อินสแตนซ์ของคลาสนี้ไม่สามารถแก้ไขได้หลังจากสร้าง) อันที่จริงแล้ว เนื่องจากคลาส String ไม่สามารถเปลี่ยนแปลงได้ อินสแตนซ์สตริงใหม่จะถูกสร้างขึ้นตามผลลัพธ์ของการดำเนินการแต่ละครั้ง และอินสแตนซ์สตริงเก่าจะถูกละทิ้ง ทำให้เกิดขยะจำนวนมาก เพื่อจัดการกับการสร้างขยะชั่วคราวเนื่องจากการแก้ไขวัตถุ String คุณสามารถใช้คลาส StringBuffer หรือ StringBuilder ข้อแตกต่างที่สำคัญระหว่างสองอันหลังคือ StringBuffer ถูกซิงโครไนซ์ในขณะที่ StringBuilder ไม่ใช่ ดังนั้น ให้ใช้ StringBuffer สำหรับสตริงที่จะแก้ไขบ่อยครั้งในสภาพแวดล้อมแบบมัลติเธรดและ StringBuilder ในกรณีของสภาพแวดล้อมแบบเธรดเดียววิธีการผนวก () ใน Java: StringBuilder และ StringBuffer - 1

ผนวก () ใน StringBuilder และ StringBuffer

ผนวก ()เป็นหนึ่งในวิธีการชั้นนำของคลาส StringBuilder และ StringBuffer ผนวกค่าใหม่เข้ากับลำดับปัจจุบัน มี 13 เมธอด append() ที่โหลดมากเกินไป ทั้งในคลาส StringBuffer และ StringBuilder ลองดูวิธีการต่อท้ายสำหรับ StringBuilder อย่างไรก็ตาม พวกมันทำงานเหมือนกันทุกประการในกรณีของ StringBuffer
  • สาธารณะ StringBuilder ต่อท้าย (บูลีน b)
  • StringBuilder สาธารณะต่อท้าย (ถ่าน c)
  • StringBuilder สาธารณะต่อท้าย (ถ่าน [] str)
  • StringBuilder สาธารณะต่อท้าย (ถ่าน [] str, int offset, int len)
  • StringBuilder สาธารณะต่อท้าย (CharSequence cs)
  • StringBuilder สาธารณะต่อท้าย (CharSequence cs, int start, int end)
  • StringBuilder สาธารณะต่อท้าย (double d)
  • StringBuilder สาธารณะต่อท้าย (float f)
  • StringBuilder สาธารณะต่อท้าย (int i)
  • StringBuilder สาธารณะต่อท้าย (long lng)
  • StringBuilder สาธารณะต่อท้าย (Object obj)
  • StringBuilder สาธารณะต่อท้าย (String str)
  • StringBuilder สาธารณะต่อท้าย (StringBuffer sb)
มาดูบางส่วนและอธิบายด้วยตัวอย่างว่า เมธอด append()ทำ อะไรได้บ้าง

Java.lang.StringBuilder.append(int i)

java.lang.StringBuilder.append(int i)เป็นเมธอดที่อนุญาตให้ต่อท้ายจำนวนเต็มกับออบเจกต์ StringBuilder ที่มีอยู่ มาดูตัวอย่างการใช้Java.lang.StringBuilder.append(int i) :
StringBuilder s = new StringBuilder(I love Java);
int i = 14;
//the method appends StringBuilder and integer
s.append(i);
System.out.println(s);
ผลลัพธ์ที่นี่จะเป็น:
ฉันรักจาวา 14
เกิดอะไรขึ้นที่นี่? ขั้นแรก เราสร้าง StringBuilder ชื่อ s ด้วยค่า "I love Java" จากนั้นเพิ่มจำนวนเต็ม 14 โดยใช้append(int ) พูดตามตรง เราไม่ได้เพิ่มจำนวนเต็ม แต่เพิ่มสตริง "14" และรับค่า StringBuilder ที่อัปเดตเป็น "I love Java 14" ดังนั้น เมธอดจะเปลี่ยนอาร์กิวเมนต์เป็นออบเจกต์ StringBuilder ผูกอาร์กิวเมนต์กับออบเจกต์ StringBuilder ที่มีอยู่ และส่งคืนค่าที่อัปเดต

StringBuilder ต่อท้าย () ตัวอย่างสำหรับอาร์กิวเมนต์ Object, int, boolean และ String

เรื่องเดียวกันจะอยู่กับเมธอดโอเวอร์โหลดอื่นๆ ทั้งหมดที่มีอิลิเมนต์ number, string, char หรือ arrays มาสร้าง LegoBrick Class และ Color enum เพื่อสาธิตเมธอดStringBuilder ต่อท้าย (Object obj)
//enum with colors
 public enum Color {
   RED, YELLOW, BLUE;
}
//LegoBrick Class code
public class LegoBrick {
   Color color;
   boolean isConnected;

   public void connect() {
       System.out.println("This brick is connected");
       this.isConnected = true;
   }

   public void disconnect() {
       System.out.println("Disconnected");
       isConnected = false;
   }

   public LegoBrick(Color color, boolean isConnected) {
       this.color = color;
       this.isConnected = isConnected;
   }

   public Color getColor() {
       return color;
   }

   public boolean isConnected() {
       return isConnected;
   }

   @Override
   public String toString() {
       return "LegoBrick{" +
              "color=" + color +
              ", isConnected=" + isConnected +
              '}';
   }
}
ตอนนี้มาสร้าง AppendDemo Class กัน โดยเราจะแสดงการต่อท้าย StringBuilder พื้นฐานด้วย String, int, LegoBrick และบูลีน ฟังดูแปลกๆ แต่ได้ผล!
public class AppendDemo {

   public static void main(String[] args) {
       StringBuilder s = new StringBuilder("I love");
System.out.println(s)
//the method appends StringBuilder and String
       s.append(" Java");
       System.out.println(s);
//the method appends StringBuilder and int
       s.append(14);
       System.out.println(s);
       LegoBrick legoBrick = new LegoBrick(Color.RED, false);
//the method appends StringBuilder and LegoBrick
       s.append(legoBrick);
       System.out.println(s);
//the method appends StringBuilder and boolean
       System.out.println(s.append(5<7));
   }
}
ผลลัพธ์คือ:
ฉันรัก ฉันรัก Java ฉันรัก Java14 ฉันรัก Java14LegoBrick{color=RED, isConnected=false} ฉันรัก Java14LegoBrick{color=RED, isConnected=false}true
ขั้นแรก เราสร้างและแสดง StringBuilder "I love" จากนั้น ขั้นแรก เราเพิ่มตามลำดับโดยใช้ วิธี การ append()สตริง, ตัวเลข int, การแสดงสตริงของวัตถุและบูลีน

StringBuilder ต่อท้าย (ถ่าน [] cstr, ชุด int, ความยาว int)

ลองดู วิธี ผนวก ()ด้วยพารามิเตอร์สามตัว มันเพิ่มการแสดง subarray ของ char array ที่กำหนดให้กับสตริง ดังนั้นที่นี่:
  • cstrเป็นอาร์เรย์ของอักขระที่จะต่อท้าย
  • ตั้งเป็นดัชนีของอักขระตัวแรกที่จะต่อท้าย
  • ความยาวคือจำนวนอักขระที่จะต่อท้าย
เช่นเดียวกับ วิธี การผนวก () อื่น ๆ วิธีนี้จะส่งคืนวัตถุ StringBuilder ที่ขยาย นี่คือตัวอย่างการใช้append(char[], cstr, int set, int length)เป็นส่วนหนึ่งของโค้ดแอป Java
public class AppendDemo {
   // an example of using append(char[], cStr, int set, int length)

   public static void main(String[] args) {
       StringBuilder s = new StringBuilder("I love ");
      //here is a char's array, part of which we are going to append to s
       char[] cStr = new char[]
               {'c', 'o', 'd', 'e', 'J', 'a', 'v', 'a', '1', '4'};
       //we append 4 elements of cStr from the 4th element "J"
       s.append(cStr, 4, 4);
       System.out.println(s);
   }
}
ผลลัพธ์คือ:
ฉันรักชวา

StringBuilder ผนวก () วิธีการกับอาร์กิวเมนต์ CharSequence

คุณอาจสังเกตเห็นสองวิธีที่มี CharSequence เป็นอาร์กิวเมนต์
  • StringBuilder สาธารณะต่อท้าย (CharSequence cs)
  • StringBuilder สาธารณะต่อท้าย (CharSequence cs, int start, int end)
ไม่ใช่ผู้เริ่มต้นทุกคนที่รู้ว่า CharSequence เป็นอินเทอร์เฟซ ตามเอกสารประกอบ CharSequence เป็นลำดับที่อ่านได้ของค่าถ่านและให้การเข้าถึงแบบอ่านอย่างเดียวสำหรับลำดับถ่านหลายประเภท อินเทอร์เฟซถูกนำไปใช้โดย Java Classes เช่น String, StringBuffer, StringBuilder และอื่นๆ ดังนั้นหากคุณไม่รู้ว่าจะใช้โปรแกรมอะไรดีกว่ากัน String, StringBuffer หรือ StringBuilder คุณสามารถใช้ CharSequence StringBuilder ต่อท้าย (CharSequence cs, int start, int end)ทำงานเกือบจะเหมือนกับการต่อท้าย (char[] cstr, int set, int length)เราได้กล่าวถึงข้างต้น อย่างไรก็ตาม วิธีนี้ระบุองค์ประกอบแรกของลำดับที่ตามมาและองค์ประกอบสุดท้าย สิ่งสำคัญคือต้องจำไว้ว่าการเริ่มต้นรวมอยู่ในลำดับถัดไป แต่จุดจบไม่ได้รวมอยู่ด้วย (นั่นคือ องค์ประกอบสุดท้ายในลำดับต่อมาคือองค์ประกอบที่อยู่ก่อนจุดสิ้นสุด) ทำไมถึงเป็นเช่นนั้น? เป็นเพียงวิธีที่เป็นใน Java มาสาธิตว่า CharSequence คืออะไร และผนวก (CharSequence cs)และ ผนวก(CharSequence cs, int start, int end)
public class CharSequenceDemo {

   public static void printCharSequence(CharSequence ch) {
       System.out.println(ch);
   }
       public static void main(String[] args) {
           CharSequence myString = new String("This is String ");
           printCharSequence(myString);
           CharSequence myStringBuilder = new StringBuilder("This is StringBuilder ");
           printCharSequence(myStringBuilder);
           StringBuilder s = new StringBuilder("my StringBuilder ");
//StringBuilder.append
s.append(myStringBuilder);
           System.out.println(s);
//StringBuilder.append
           s.append(myString);
           System.out.println(s);
           s.append(myString, 5,7);
           System.out.println(s);
       }
   }
ผลลัพธ์คือ:
นี่คือ String นี่คือ StringBuilder ของฉัน นี่คือ StringBuilder นี่คือ StringBuilder ของฉัน นี่คือ StringBuilder นี่คือ String ของฉัน StringBuilder นี่คือ StringBuilder นี่คือ String คือ
เราสร้าง CharSequences สองตัว ผูก String และ StringBuilder กับพวกมันแล้วพิมพ์ออกมา เราไม่สามารถใช้ เมธอด append()กับ myStringBuilder ได้โดยตรง เนื่องจาก CharSequence ไม่มีเมธอดนี้ (หากคุณไม่เข้าใจว่าทำไม คุณต้องหาข้อมูลเกี่ยวกับการสืบทอด ตลอดจนการขยายและการจำกัดประเภทการอ้างอิงให้แคบลง) ดังนั้นเราจึงสร้าง StringBuilder และเชื่อมต่อโดยใช้วิธีการต่อท้ายตามลำดับด้วย CharSequence ทั้งสอง ในตอนท้าย เราต่อท้าย StringBuilder ด้วยลำดับที่ตามมา “คือ” (“i” เป็นองค์ประกอบที่ 5 ของ myStringBuilder และ s คือองค์ประกอบที่ 6 โปรดจำไว้ว่าในเมธอด องค์ประกอบที่ระบุเป็นสิ้นสุดจะไม่รวมอยู่ในลำดับที่ตามมา

แล้ว StringBuffer ต่อท้าย () ล่ะ

StringBuffer.appendมี 13 ตัวแปรของวิธีการและพวกเขาทำงานในลักษณะเดียวกับ StringBuilder
  • StringBuffer สาธารณะต่อท้าย (บูลีน b)
  • StringBuffer สาธารณะต่อท้าย (ถ่าน c)
  • สาธารณะ StringBuffer ผนวก (ถ่าน [] str)
  • สาธารณะ StringBuffer ผนวก (ถ่าน [] str, int offset, int len)
  • StringBuffer สาธารณะต่อท้าย (double d)
  • StringBuffer สาธารณะต่อท้าย (float f)
  • StringBuffer สาธารณะต่อท้าย (int i)
  • StringBuffer สาธารณะต่อท้าย (long lng)
  • StringBuffer สาธารณะต่อท้าย (CharSequence s)
  • StringBuffer สาธารณะต่อท้าย (CharSequence s, int start, int end)
  • StringBuffer สาธารณะต่อท้าย (Object obj)
  • StringBuffer สาธารณะต่อท้าย (String str)
  • StringBuffer สาธารณะต่อท้าย (StringBuffer sb)
มาดูตัวอย่างStringBuffer.appendเพื่อรวมสตริงย่อย เราเพียงแค่ใช้ตัวอย่าง StringBuilder และเปลี่ยน StringBuilders ทั้งหมดในโค้ดเป็น StringBuffers
public class AppendDemo {
   // an example of using append(char[], cStr, int set, int length)

   public static void main(String[] args) {
       StringBuffer s = new StringBuffer("I love ");
      //here is a char's array, part of which we are going to append to s
       char[] cStr = new char[]
               {'c', 'o', 'd', 'e', 'J', 'a', 'v', 'a', '1', '4'};
       //we append 4 elements of cStr from the 4th element "J"
//with StringBuffer.append
       s.append(cStr, 4, 4);
       System.out.println(s);
//StringBuffer.append adds int 14 to s
s.append(14);
System.out.println(s);
   }
}
ผลลัพธ์คือ:
ฉันรัก Java ฉันรัก Java14
คุณสามารถทำได้กับทุกตัวอย่างในบทความนี้ พวกเขาจะทำงาน!

บทสรุป

เนื่องจาก StringBuilder และ StringBuffer ใช้ฟังก์ชันส่วนใหญ่ร่วมกัน จึงไม่แปลกใจเลยที่ทั้งสองคลาสจะมี วิธีการใช้เมธอดappend() ที่คล้ายกัน นั่นเป็นข่าวดีสำหรับนักพัฒนา — คุณไม่จำเป็นต้องเรียนรู้วิธีการแยกกันสำหรับแต่ละชั้นเรียน ต้องบอกว่า เมื่อพิจารณาถึงวิธีต่างๆ ในการใช้append()อย่าลืมฝึกฝนสองสามชั่วโมงเพื่อเพิ่มการแสดงประเภทข้อมูลต่างๆ ลงในสตริง
ความคิดเห็น
  • เป็นที่นิยม
  • ใหม่
  • เก่า
คุณต้องลงชื่อเข้าใช้เพื่อแสดงความคิดเห็น
หน้านี้ยังไม่มีความคิดเห็นใด ๆ