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 để giữ một chuỗi các ký tự không thể sửa đổi (một khi được khởi tạo). Ngoài ra, ngôn ngữ lập trình Java cung cấp hai loại ký tự có thể thay đổi. Đó là, khi các lập trình viên cần sửa đổi một Chuỗi nhất định (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 (đối với 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 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ì đây là lớp cuối cùng. Lớp StringBuffer thực hiện các giao diện Nối tiếp, Nối thêm và CharSequience. Một đối tượng của lớp StringBuffer có thể chứa một chuỗi các ký tự có thể thay đổi và an toàn 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ể được thay đổi bất cứ 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á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 bị quá tải, vì vậy chúng có thể chấp nhận dữ liệu thuộc bất kỳ loại nào như số nguyên và dài. Cả hai phương thức trước tiên 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ớp StringBuilder đã được giới thiệu trong JDK 1.5. API StringBuilder rất giống với API StringBuffer. Trong thực tế, lớp StringBuilder thực sự được giới thiệu như là một sự thay thế cho lớp StringBuffer (cho các ứng dụng đơn luồng). Lớp StringBuilder thuộc 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 thực hiện các giao diện Nối tiếp, Nối thêm 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 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 khẳng định là nhanh hơn so với 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 chính xác 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 sự 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 đó, nên sử dụng lớp StringBuilder 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 trường hợp bình thường).