"Chào, Amigo!"

"Nhưng, Bilaabo, bạn đã nói xin chào."

"Thật sao? Chà, tôi vẫn thích bắt đầu mỗi bài học với cụm từ đó."

"Hôm nay chúng ta sẽ nghiên cứu sâu về lớp Chuỗi."

"Nhưng, tôi đã biết mọi thứ về nó. Tôi thậm chí còn biết rằng lớp Chuỗi là bất biến."

"Lớp String có 46 phương thức. Bạn biết bao nhiêu phương thức?"

"Không quá 10. Trên thực tế, có lẽ tối đa là 5."

"Vậy thì nghe đây."

"Những người sáng tạo Java nhận thấy rằng hầu hết các chuỗi trong chương trình không có ý định sửa đổi, nhưng đôi khi chúng vẫn bị sửa đổi. Thật khó chịu khi bạn tạo một Chuỗi, lưu một thứ quan trọng trong đó, chuyển nó sang phương thức của người khác và nó bị thay đổi . Để ngăn điều này xảy ra, họ đã quyết định tạo cả Chuỗi có thể thay đổi và không thể thay đổi."

"Lớp String dành cho các chuỗi bất biến và lớp StringBuilder dành cho các chuỗi có thể thay đổi. Các đối tượng của các lớp này dễ dàng chuyển đổi sang loại khác. Trong hầu hết các trường hợp, các nhà phát triển Java chỉ cần String, điều này chứng tỏ rằng những người tạo ra Java đã đúng."

"Vì vậy, nếu tôi cần một Chuỗi, tôi sử dụng lớp Chuỗi. Và nếu tôi cần một Chuỗi có thể thay đổi, thì tôi sử dụng lớp StringBuilder ?"

"Vâng. Trên thực tế, có một lớp khác gọi là StringBuffer. Nó là một bản sao của StringBuilder, ngoại trừ tất cả các phương thức của nó được khai báo là đồng bộ hóa , để đối tượng có thể được truy cập từ các luồng khác nhau của chương trình."

"Còn ví dụ này thì sao? Chuỗi có bị thay đổi ở đây không?"

String s = "cat";
s = s + "-" + s;

"Không. Có hai đối tượng String ở đây: «cat» và «cat-cat». Đối tượng thứ hai được tạo bằng cách sử dụng đối tượng thứ nhất, nhưng đối tượng đầu tiên không thay đổi. Thực tế, mọi thứ ở đây thú vị hơn nhiều. Đây là mã trình biên dịch tạo ra khi nó biên dịch ví dụ của bạn:"

String s = "cat";
StrinsBuilder s2 = new StringBuilder(s);
s2.append("-");
s2.append(s);
s = s2.toString();

"Vì vậy, StringBuilder hầu như luôn được sử dụng để tạo Chuỗi mới, nhưng đôi khi trình biên dịch chỉ đơn giản là thực hiện tất cả công việc cho bạn. Nhưng phiên bản của bạn đơn giản hơn, bạn có nghĩ vậy không?"

"Vâng, thật tuyệt vời khi Java có một trình biên dịch tiên tiến như vậy."

"Chà, bây giờ chúng ta hãy xem qua các phương thức của lớp String:"

1) Làm cách nào để tìm độ dài của Chuỗi?

" Phương thức độ dài trả về độ dài của Chuỗi (số lượng ký tự trong đó)."

(các) phương pháp (các) ví dụ
int length();
String s = "Good news, everyone!";
int n = s.length();
int n = "Good news, everyone!".length();

2) Làm cách nào để lấy một ký tự từ Chuỗi?

" Phương thức charAt trả về một ký tự từ Chuỗi theo chỉ mục của nó. Chỉ số ký tự bắt đầu từ 0.

(các) phương pháp (các) ví dụ
char charAt(int index)
String s = "Good news, everyone!";
char n = s.charAt(5);
char n = "Good news, everyone!".charAt(5);

3) Làm cách nào để lấy các ký tự từ Chuỗi?

Làm cách nào để lấy các ký tự từ Chuỗi?

(các) phương pháp (các) ví dụ
char[]toCharArray ()
String s = "Good news, everyone!";
for(char c: s.toCharArray())
{
System.out.println(c);
}

4) Làm cách nào để so sánh các Chuỗi?

"Phương thức bằng kiểm tra xem các Chuỗi có khớp không và phương thức bằngIgnoreCase kiểm tra xem các Chuỗi có khớp không khi trường hợp bị bỏ qua.

(các) phương pháp (các) phương pháp
boolean equals(Object o)
String s = "cat";
boolean test1 = s.equals("cat");//true
boolean test2 = s.equals("Cat");//false
boolean test3 = s.equals("c"+"a"+"t");//true
boolean equalsIgnoreCase(String str)
String s = "cat";
boolean test1 = s.equalsIgnoreCase("cat");//true
boolean test2 = s.equalsIgnoreCase("Cat");//true
boolean test3 = s.equalsIgnoreCase("cAT");//true

5) Làm cách nào để tạo tất cả các chữ cái trong Chuỗi chữ hoa hoặc chữ thường?

" Phương thức toUpperCase trả về một bản sao của Chuỗi có tất cả các chữ cái viết hoa."

" Phương thức toLowerCase trả về một bản sao của Chuỗi có tất cả các chữ cái viết thường."

(các) phương pháp (các) ví dụ
String toUpperCase()
String s = " Good news, everyone!  ";
s = s.toUpperCase();

Kết quả:

s == "GOOD NEWS, EVERYONE!";
String toLowerCase()
String s = "Good news, everyone!";
s = s.toLowerCase();

Kết quả:

s == "good news, everyone!";

6) Làm cách nào để xóa khoảng trắng ở đầu và cuối Chuỗi?

"Phương thức trim trả về một bản sao của Chuỗi không có ký tự khoảng trắng ở đầu và cuối."

(các) phương pháp (các) ví dụ
String trim()
String s = "   Good news, everyone!   ";
s = s.trim();

Kết quả:

s == "Good news, everyone!";