Khi nào nên dùng StringBuffer/StringBuilder thay vì String trong Java?
- Đối tượng lớp
String là bất biến (immutable), trong khi đối tượng StringBuffer và StringBuilder là có thể thay đổi (mutable).
StringBuffer được đồng bộ (synchronized), StringBuilder không đồng bộ.
- Toán tử nối chuỗi
+ nội bộ được triển khai bằng StringBuffer hoặc StringBuilder.
- Nếu giá trị đối tượng không thay đổi, dùng
String vì nó bất biến.
- Nếu giá trị đối tượng có thể thay đổi và chỉ được truy cập từ một luồng (single thread), dùng
StringBuilder vì nó không đồng bộ.
- Nếu giá trị đối tượng có thể thay đổi và sẽ được sửa đổi bởi nhiều luồng, dùng
StringBuffer vì nó đồng bộ.