Lớp StringBuffer trong Java

Trong java, lớp StringBuffer được sử dụng để tạo chuỗi có thể thay đổi (mutable). Lớp StringBuffer trong java tương tự như lớp String ngoại trừ nó có thể thay đổi.

image

Khởi tạo một lớp StringBuffer

Lớp này cung cấp nhiều phương thức khởi tạo, chương trình sau minh hoạ cách sử dụng các phương thức khởi tạo khác nhau để tạo ra các đối tượng của lớp này

class StringBuffer {
  public static void main(String args[]){
    StringBuffer s1 = new StringBuffer();
    StringBuffer s2 = new StringBuffer(20);
    StringBuffer s3 = new StringBuffer("StringBuffer");
    System.out.println("s3 = "+ s3);
    System.out.println(s2.length()); // chứa 0
    System.out.println(s3.length()); //chứa 12
    System.out.println(s1.capacity());  //chứa 16
    System.out.println(s2.capacity());  //chứa 20
    System.out.println(s3.capacity()); //chứa 28
  }
}
Kết quả
0
12
16
20
28

length()capacity() của StringBuffer là hai phương thức hoàn toàn khác nhau. Phương thức length() đề cập đến số các ký tự mà đối tượng thực chứa, trong khi capacity() trả về tổng dung lượng của một đối tượng (mặc định là 16) và số ký tự trong đối tượng StringBuffer.

Dung lượng của StringBuffer có thể thay đổi với phương thức ensureCapacity(). Đối số int đã được truyền đến phương thức này, và dung lượng mới được tính toán như sau:

NewCapacity = OldCapacity * 2 + 2

Trước khi dung lượng của StringBuffer được đặt lại, điều kiện sau sẽ được kiểm tra:

  • Nếu dung lượng mới (NewCapacity) lớn hơn đối số được truyền cho phương thức ensureCapacity(), thì dung lượng mới bằng NewCapacity được đặt.
  • Nếu dung lượng mới nhỏ hơn đối số được truyền cho phương thức ensureCapacity(), thì dung lượng được đặt bằng giá trị tham số truyền vào.
Chương trình sau minh hoạ dung lượng được tính toán và được đặt như thế nào
class StringBuffer {
  public static void main(String args[]) {
    StringBuffer s1 = new StringBuffer(5);
    System.out.println("Dung    lượng   của bộ  nhớ đệm = "+s1.capacity()); //chứa 5
    s1.ensureCapacity(8);
    System.out.println("Dung    lượng   của bộ  nhớ đệm = "+s1.capacity()); //chứa 12
    s1.ensureCapacity(30);
    System.out.println("Dung    lượng   của bộ  nhớ đệm = "+s1.capacity()); // chứa 30
  }
}

Trong đoạn mã trên, dung lượng ban đầu của s1 là 5. Câu lệnh

s1.ensureCapacity(8);

Thiết lập dung lượng của s1 đến 12 =(5*2 + 2) bởi vì dung lượng truyền vào là 8 nhỏ hơn dung lượng được tính toán là 12.

s1.ensureCapacity(30);

Thiết lập dung lượng của "s1" đến 30 bởi vì dung lượng truyền vào là 30 thì lớn hơn dung lượng được tính toán (12*2+2).

Các phương thức lớp StringBuffer

  • void append(): Phương thức này nối thêm một chuỗi hoặc một mảng ký tự vào cuối cùng của đối tượng StringBuffer. Ví dụ:
StringBuffer s1 = new StringBuffer("Good");
s1.append("evening");

Giá trị trong s1 bây giờ là Goodevening.

  • insert(): Phương thức này có hai tham số. Tham số đầu tiên là vị trí chèn. Tham số thứ hai có thể là một chuỗi, một ký tự (char), một giá trị nguyên (int), hay một giá trị số thực (float) được chèn vào. Vị trí chèn sẽ lớn hơn hay bằng 0, và nhỏ hơn hay bằng chiều dài của đối tượng StringBuffer. Bất kỳ đối số nào, trừ ký tự hoặc chuỗi, được chuyển sang chuỗi và sau đó mới được chèn vào.
StringBuffer str = new StringBuffer("Java sion");
str.insert(1,’b’);
Kết quả
Biến "str" chứa chuỗi "Jbava sion"
  • char charAt(): Phương thức này trả về một giá trị ký tự trong đối tượng StringBuffer tại vị trí được chỉ định.
StringBuffer str = new StringBuffer("James Gosling");
char letter = str.charAt(6); //chứa "G"
  • void setCharAt(int index, char value): Phương thức này được sử dụng để thay thế ký tự trong một StringBuffer bằng một ký tự khác tại một vị trí được chỉ định.
StringBuffer name = new StringBuffer("Jawa");
name.setCharAt(2,’v’);
Kết quả
Biến "name" chứa "Java".
  • void setLength(): Phương thức này thiết lập chiều dài của đối tượng StringBuffer. Nếu chiều dài được chỉ định nhỏ hơn chiều dài dữ liệu hiện tại của nó, thì các ký tự thừa sẽ bị cắt bớt. Nếu chiểu dài chỉ định nhiều hơn chiều dài dữ liệu thì các ký tự null được thêm vào phần cuối của StringBuffer
StringBuffer str = new StringBuffer(10);
str.setLength(str.length() + 10);

char [] getChars(): Phương thức này được sử dụng để trích ra các ký tự từ đối tượng StringBuffer, và sao chép chúng vào một mảng và có bốn tham số sau:

  • Chỉ số đầu: vị trí bắt đầu, từ nơi mà ký tự được lấy ra.
  • Chỉ số kết thúc: vị trí kết thúc
  • Mảng: Mảng đích, nơi mà các ký tự được sao chép.
  • Vị trí bắt đầu trong mảng đích: Các ký tự được sao chép vào mảng đích từ vị trí này.
StringBuffer str = new StringBuffer("Leopard");
char ch[] = new char[10];
str.getChars(3,6,ch,0);
Kết quả
Bây giờ biến "ch" chứa "par"
  • void reverse(): Phương thức này đảo ngược nội dung của một đối tượng StringBuffer, và trả về một đối tượng StringBuffer khác.
StringBuffer str = new StringBuffer("devil");
StringBuffer strrev = str.reverse();
Kết quả
Biến "strrev" chứa "lived".
Avatar Administrator

Administrator

@thaycacac
Muốn đổi thói quen, phải thay hành động.
Logo thể loại Java

Java

Chuyên mục học lập trình
Học Java từ cơ bản đến thông thạo cho mọi đối tượng
hello