String là immutable — mỗi lần thay đổi tạo ra object mới, không hiệu quả khi nối chuỗi liên tục.
- StringBuilder là mutable, nhanh hơn String khi nối chuỗi nhưng KHÔNG thread-safe.
- StringBuffer là mutable và thread-safe (các method được synchronized) nhưng chậm hơn StringBuilder một chút.
- Dùng StringBuilder cho code đơn luồng, StringBuffer khi cần an toàn đa luồng.