Sự khác biệt giữa StringBuffer và StringBuilder

Anonim

StringBuffer vs StringBuilder

Java là một ngôn ngữ lập trình hướng đối tượng rất phổ biến. Trong Java, lớp String được cung cấp để giữ một dãy các ký tự không thể sửa đổi (một lần được 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. Đó là, khi các lập trình viên cần sửa đổi một String (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 single-thread).

StringBuffer là gì?

Lớp StringBuffer được giới thiệu trong JDK 1. 0. Lớp StringBuffer thuộc java. lang và được thừa hưởng từ java chung. lang. vật. Các lập trình không thể mở rộng nó thêm nữa vì đây là lớp cuối cùng. Lớp StringBuffer thực hiện 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 cho thread. Điều đó có nghĩa là nó giống như đối tượng String, nhưng chuỗi ký tự (chiều 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, cần được thực hiện bằng cách sử dụng các phương pháp cụ thể được cung cấp bởi lớp StringBuffer. Có hai hoạt động chính 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 pháp này quá tải, do đó, họ có thể chấp nhận dữ liệu của bất kỳ loại như số nguyên và dài. Cả hai phương pháp đầu tiên chuyển đổi bất kỳ đầu vào cho một chuỗi, và sau đó thêm (nối hoặc chèn) các ký tự của chuỗi tương ứng với đối tượng Stribbuffer hiện có. Phương thức append () thêm chuỗi được chuyển đổi vào cuối đối tượng StringBuffer hiện tại, 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 đã được giới thiệu như một sự thay thế cho lớp StringBuffer (đối với các ứng dụng đơn luồng). Lớp StringBuilder thuộc về java. lang và được thừa hưởng từ java chung. lang. vật. Đó là một lớp học cuối cùng và do đó các lập trình viên không thể mở rộng nó. Lớp StringBuilder thực hiện 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 ký tự có thể thay đổi nhưng không an toàn cho thread. Điều đó có nghĩa, nó rất giống với một đối tượng String, nhưng chuỗi có thể 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 bằng cách sử dụng lớp StringBuffer. Lớp StringBuilder cung cấp phương thức append () và insert () có chức năng tương tự như trong lớp StringBuffer.

Sự khác nhau 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 của các ký tự 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 phải là thread-safe, và không cung cấp đồng bộ hóa. Do đó, khuyên rằng lớp StringBuilder nên được sử dụng thay cho lớp StringBuffer trong các ứng dụng một luồng vì nó tuyên bố 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).