🎥 Video minh họa nguồn: YTB Code Thu
1) String là immutable - bất biến
String trong Java là bất biến (immutable) - nghĩa là không thể thay đổi sau khi tạo.
String s1 = "Hello";
s1.concat(" World"); // Tạo string mới nhưng không gán lại
System.out.println(s1); // Vẫn in "Hello"
// Phải gán kết quả vào biến mới
String s2 = s1.concat(" World");
System.out.println(s2); // In "Hello World"
2) String Pool
Java sử dụng String Pool để tối ưu bộ nhớ, tái sử dụng string giống nhau.
String str1 = "Java";
String str2 = "Java"; // Trỏ cùng về 1 vị trí trong pool
System.out.println(str1 == str2); // true
String str3 = new String("Java"); // Tạo đối tượng mới
System.out.println(str1 == str3); // false
3) So sánh String đúng cách
Do cơ chế String Pool, không nên dùng == để so sánh String.
String a = "Code";
String b = new String("Code");
System.out.println(a == b); // false
System.out.println(a.equals(b)); // true - cách đúng
4) Hiệu suất với String
Khi cần nối nhiều String, dùng StringBuilder thay vì toán tử +.
// Không hiệu quả
String result = "";
for (int i = 0; i < 1000; i++) {
result += i; // Tạo nhiều đối tượng String mới
}
// Hiệu quả hơn
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 1000; i++) {
sb.append(i); // Thay đổi trực tiếp nội dung
}
String result = sb.toString();
5) Kết luận & cảm nhận
- String bất biến giúp code an toàn hơn, tránh thay đổi nội dung không mong muốn
- Hiểu về String Pool giúp tối ưu bộ nhớ và viết code so sánh chính xác
- StringBuilder là giải pháp hiệu quả khi cần thao tác String nhiều lần