StringBuffer vs StringBuilder
Java là một ngôn ngữ hướng đối tượng rất phổ biến. Trong Java, lớp String được cung cấp để chứa một chuỗi ký tự không thể sửa đổi (một khi đã khởi tạo). Ngoài ra, ngôn ngữ lập trình Java cung cấp hai loại chuỗi ký tự có thể thay đổi. Tức là, khi người lập trình cần sửa đổi một chuỗi nào đó (sau khi khởi tạo), họ cần sử dụng lớp StringBuffer hoặc lớp StringBuilder thay vì lớp String. StringBuffer đã được giới thiệu trong JDK 1.0 và lớp StringBuilder được giới thiệu trong JDK 1.5, thực sự là một sự thay thế cho lớp StringBuffer (cho môi trường đơn luồng).
StringBuffer là gì?
Lớp StringBuffer đã được giới thiệu trong JDK 1.0. Lớp StringBuffer thuộc về gói java.lang và được kế thừa từ java.lang.object chung. Các lập trình viên không thể mở rộng nó hơn nữa vì Nó là một lớp cuối cùng. Lớp StringBuffer triển khai các giao diện Serializable, Appendable và CharSequience. Một đối tượng của lớp StringBuffer có thể chứa một chuỗi ký tự có thể thay đổi và an toàn theo luồng. Điều đó có nghĩa là, nó rất giống với đối tượng String, nhưng chuỗi ký tự (độ dài và nội dung) có thể thay đổi bất kỳ lúc nào sau khi khởi tạo đối tượng StringBuffer. Tuy nhiên, điều đó nên được thực hiện bằng cách sử dụng các phương thức cụ thể được cung cấp bởi lớp StringBuffer. Có hai hoạt động nguyên tắc trong lớp StringBuffer. Chúng được cung cấp bởi các phương thức append () và insert (). Các phương thức này được nạp chồng, vì vậy chúng có thể chấp nhận dữ liệu thuộc bất kỳ kiểu nào như số nguyên và dài. Cả hai phương pháp trước hết chuyển đổi bất kỳ đầu vào nào thành một chuỗi, sau đó thêm (nối hoặc chèn) các ký tự của chuỗi tương ứng vào đối tượng Stribbuffer hiện có. Phương thức append () thêm chuỗi đã chuyển đổi vào cuối đối tượng StringBuffer hiện có, trong khi phương thức insert () sẽ thêm các ký tự đầu vào vào điểm chèn đã chỉ định.
StringBuilder là gì?
LớpStringBuilder đã được giới thiệu trong JDK 1.5. API StringBuilder rất giống với API StringBuffer. Trên thực tế, lớp StringBuilder thực sự được giới thiệu để thay thế cho lớp StringBuffer (dành cho các ứng dụng đơn luồng). Lớp StringBuilder thuộc về gói java.lang và được kế thừa từ java.lang.object chung. Nó là một lớp cuối cùng và vì vậy các lập trình viên không thể mở rộng nó. Lớp StringBuilder triển khai các giao diện Serializable, Appendable và CharSequience. Một đối tượng của lớp StringBuilder có thể chứa một chuỗi các ký tự có thể thay đổi được nhưng không an toàn cho chuỗi. Điều đó có nghĩa là, nó rất giống với một đối tượng String, nhưng chuỗi có thể được thay đổi bất cứ lúc nào. Nhưng lớp StringBuilder không cung cấp đồng bộ hóa và do đó được cho là nhanh hơn so với việc sử dụng lớp StringBuffer. Lớp StringBuilder cung cấp các phương thức append () và insert () với chức năng hoàn toàn tương tự như trong lớp StringBuffer.
Sự khác biệt giữa StringBuffer và StringBuilder là gì?
Mặc dù, các lớp StringBuilder và StringBuffer có thể được sử dụng cho các chuỗi ký tự có thể thay đổi trong Java, chúng có một điểm khác biệt chính. Không giống như lớp StringBuffer, lớp StringBuilder không an toàn cho luồng và không cung cấp đồng bộ hóa. Do đó, chúng tôi khuyến nghị rằng lớp StringBuilder nên được sử dụng thay cho lớp StringBuffer trong các ứng dụng đơn luồng, vì người ta cho rằng lớp StringBuilder sẽ nhanh hơn nhiều so với lớp StringBuffer (trong các trường hợp bình thường).