Làm chủ Java String
String là một trong những kiểu dữ liệu quan trọng nhất trong Java. Hiểu rõ cách String hoạt động sẽ giúp bạn viết code hiệu quả hơn và tránh được nhiều lỗi phổ biến.
1. String là Immutable (Bất biến)
Một đặc điểm quan trọng của String trong Java là nó bất biến. Điều này có nghĩa là sau khi được tạo, giá trị của String không thể thay đổi.
String str = "Hello";
str.concat(" World");
System.out.println(str); // Vẫn in ra "Hello"
// Để thay đổi, phải gán lại:
str = str.concat(" World");
System.out.println(str); // In ra "Hello World"
2. String Pool
Java sử dụng một vùng nhớ đặc biệt gọi là String Pool để lưu trữ các String literals. Điều này giúp tiết kiệm bộ nhớ khi nhiều biến tham chiếu đến cùng một chuỗi.
String s1 = "Java";
String s2 = "Java";
String s3 = new String("Java");
System.out.println(s1 == s2); // true (cùng tham chiếu)
System.out.println(s1 == s3); // false (khác tham chiếu)
System.out.println(s1.equals(s3)); // true (cùng giá trị)
3. So sánh String
Luôn sử dụng equals() hoặc equalsIgnoreCase() để so sánh nội dung, không dùng ==.
String str1 = "Java";
String str2 = "java";
// So sánh phân biệt hoa thường
str1.equals(str2); // false
// So sánh không phân biệt hoa thường
str1.equalsIgnoreCase(str2); // true
4. Các phương thức hữu ích
length()- Độ dài chuỗicharAt(index)- Ký tự tại vị trí indexsubstring(start, end)- Chuỗi contoLowerCase(),toUpperCase()- Chuyển đổi hoa/thườngtrim()- Xóa khoảng trắng đầu/cuốisplit(regex)- Tách chuỗi thành mảng
5. StringBuilder vs StringBuffer
Khi cần thay đổi String nhiều lần, hãy sử dụng StringBuilder (không thread-safe) hoặc StringBuffer (thread-safe) thay vì String để tránh tạo nhiều object không cần thiết.
StringBuilder sb = new StringBuilder("Hello");
sb.append(" World");
sb.append("!");
String result = sb.toString(); // "Hello World!"
Kết luận
Hiểu rõ về String trong Java giúp bạn viết code tối ưu hơn. Hãy nhớ: String là immutable, sử dụng equals() để so sánh, và dùng StringBuilder khi cần thao tác nhiều lần.