1. Sửa đổi chuỗi

Trong Java, chuỗi là đối tượng bất biến. Điều này được thực hiện để làm cho lớp Chuỗi được tối ưu hóa cao và cho phép nó được sử dụng ở mọi nơi. Ví dụ: chỉ các loại bất biến được khuyến nghị sử dụng làm khóa trong bộ sưu tập HashMap .

Tuy nhiên, các tình huống thường phát sinh khi các lập trình viên thấy thuận tiện hơn khi Stringlớp có thể thay đổi được. Họ muốn một lớp không tạo chuỗi con mới mỗi khi một trong các phương thức của nó được gọi.

Chà, giả sử chúng ta có một chuỗi rất lớn và chúng ta cần thường xuyên thêm một cái gì đó vào cuối chuỗi đó. Trong trường hợp này, ngay cả một tập hợp các ký tự ( ArrayList<Character>) cũng có thể hiệu quả hơn việc liên tục tạo lại và nối các đối tượng Chuỗi.

Đó chính xác là lý do tại sao một loại kiểu Chuỗi có thể thay đổi được thêm vào ngôn ngữ Java. Nó được gọi là StringBuilder.

Tạo một đối tượng

Để tạo một StringBuilderđối tượng dựa trên một chuỗi hiện có, bạn cần thực thi một câu lệnh như:

StringBuilder name = new StringBuilder(string);

Để tạo một chuỗi trống có thể thay đổi, bạn cần sử dụng một câu lệnh như sau:

StringBuilder name = new StringBuilder();

Danh sách các phương pháp

Lớp StringBuildercó hai chục phương pháp hữu ích. Đây là những điều quan trọng nhất:

Phương pháp Sự miêu tả
StringBuilder append(obj)
Chuyển đổi đối tượng đã truyền thành một chuỗi và nối nó vào chuỗi hiện tại
StringBuilder insert(int index, obj)
Chuyển đổi đối tượng đã truyền thành một chuỗi và chèn nó vào chuỗi hiện tại
StringBuilder replace(int start, int end, String str)
Thay thế một phần của chuỗi được chỉ định bởi khoảng thời gian bắt đầu..kết thúc bằng chuỗi đã truyền
StringBuilder deleteCharAt(int index)
Xóa ký tự có chỉ số đã chỉ định khỏi chuỗi
StringBuilder delete(int start, int end)
Xóa các ký tự trong khoảng thời gian đã chỉ định khỏi chuỗi
int indexOf(String str, int index)
Tìm kiếm một chuỗi con trong chuỗi hiện tại
int lastIndexOf(String str, int index)
Tìm kiếm một chuỗi con trong chuỗi hiện tại, bắt đầu từ cuối
char charAt(int index)
Trả về ký tự trong chuỗi tại chỉ mục đã truyền
String substring(int start, int end)
Trả về chuỗi con được xác định bởi khoảng thời gian đã chỉ định
StringBuilder reverse()
Đảo ngược chuỗi hiện tại.
void setCharAt(int index, char)
Thay đổi ký tự tại chỉ mục đã chỉ định thành ký tự đã truyền
int length()
Trả về độ dài của chuỗi theo ký tự

Dưới đây là mô tả ngắn gọn về từng phương pháp


2. Mô tả phương pháp:

Nối vào một chuỗi

Để thêm một cái gì đó vào một chuỗi có thể thay đổi ( StringBuilder), hãy sử dụng append()phương thức. Ví dụ:

Mã số Sự miêu tả
StringBuilder builder = new StringBuilder("Hi");
builder.append("Bye");
builder.append(123);
Hi
HiBye
HiBye123

Chuyển đổi thành một chuỗi tiêu chuẩn

Để chuyển một StringBuilderđối tượng thành đối tượng String, bạn chỉ cần gọi toString()phương thức của nó. Ví dụ

Mã số đầu ra
StringBuilder builder = new StringBuilder("Hi");
builder.append(123);
String result = builder.toString();
System.out.println(result);
Hi123

Làm cách nào để xóa một ký tự?

Để xóa một ký tự trong chuỗi có thể thay đổi, bạn cần sử dụng deleteCharAt()phương thức. Ví dụ:

Mã số đầu ra
StringBuilder builder = new StringBuilder("Hello");
builder.deleteCharAt(2);
String result = builder.toString();
System.out.println(result);
Helo

Làm cách nào để thay thế một phần của chuỗi bằng một chuỗi khác?

Đối với điều này có replace(int begin, int end, String str)phương pháp. Ví dụ:

Mã số đầu ra
StringBuilder builder = new StringBuilder("Mellow");
builder.replace(2, 5, "Hello!");
String result = builder.toString();
System.out.println(result);
MeHello!w


3. Các ví dụ hữu ích khi làm việc với chuỗi

Làm cách nào để đảo ngược một chuỗi?

Có một phương pháp đặc biệt để làm điều này — reverse(); Ví dụ:

Mã số đầu ra
String str = "Hello";
StringBuilder builder = new StringBuilder(str);
builder.reverse();
String result = builder.toString();
System.out.println(result);
olleH

StringBufferlớp học

Có một lớp khác - StringBuffer, tương tự như lớp này StringBuilder, nhưng các phương thức của nó được đánh dấu bằng công synchronizedcụ sửa đổi. Nó có nghĩa là StringBufferđối tượng có thể được truy cập đồng thời từ nhiều luồng.

Nhưng nó chậm hơn nhiều so với StringBuilder. Bạn có thể cần lớp này khi bạn bắt đầu tích cực khám phá đa luồng trong nhiệm vụ Đa luồng Java .