Trong bài viết này, chúng ta sẽ tìm hiểu sự khác biệt giữa lớp String và StringBuffer trong Java.
String
- Là lớp bất biến (immutable) - không thể thay đổi nội dung sau khi tạo
- Chậm hơn khi thao tác nối chuỗi
- Tốn ít bộ nhớ hơn khi nối chuỗi (vì tạo instance mới mỗi lần)
- Ghi đè phương thức equals() của Object → có thể dùng equals() để so sánh
Ví dụ String
public class StringDemo {
public static void main(String args[]) {
String palindrome = "Dot saw I was Tod";
int len = palindrome.length();
System.out.println("String Length is : " + len);
}
}
StringBuffer
- Là lớp có thể thay đổi (mutable)
- Nhanh hơn khi thao tác nối chuỗi
- Sử dụng ít bộ nhớ hơn khi nối chuỗi (sửa đổi trực tiếp)
- KHÔNG ghi đè equals() của Object → không nên dùng equals() để so sánh
Ví dụ StringBuffer
public class Demo {
public static void main(String args[]) {
StringBuffer sBuffer = new StringBuffer("test");
sBuffer.append(" String Buffer");
System.out.println(sBuffer);
}
}