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

Sự khác biệt chính - Chuỗi vs StringBuffer vs StringBuilder trong Java
 

String, StringBuffer và String Builder là các lớp trong Java. Chuỗi được sử dụng rộng rãi trong lập trình Java. Khi một đối tượng của String được tạo, không thể thay đổi chúng. Mỗi lần thay đổi xảy ra với Chuỗi, nó sẽ tạo ra một Chuỗi mới. Ngay cả khi nó là một chuỗi nối với một Chuỗi hiện có, nó sẽ tạo ra một Chuỗi mới. Điều này gây ra sự lãng phí bộ nhớ. Các lớp StringBuffer và StringBuilder trong Java được sử dụng để sửa đổi String. Các sự khác biệt chính giữa String, StringBuffer và StringBuilder trong Java là String là một lớp để tạo một đối tượng kiểu String là một chuỗi các ký tự, StringBuffer là một lớp được sử dụng để sửa đổi các chuỗi cung cấp sự an toàn của luồng và StringBuilder là một lớp được sử dụng để sửa đổi các chuỗi không cung cấp sự an toàn của luồng.

NỘI DUNG

1. Tổng quan và sự khác biệt chính
2. Chuỗi trong Java là gì
3. StringBuffer trong Java là gì
4. StringBuilder trong Java là gì
5. Điểm tương đồng giữa String StringBuffer và StringBuilder trong Java
6. So sánh cạnh nhau - String vs StringBuffer vs StringBuilder trong Java ở dạng bảng
7. Tóm tắt

Chuỗi trong Java là gì?

Lớp chuỗi nằm trong gói java.lang. Mỗi lần lập trình viên tạo ra một Chuỗi, nó là một đối tượng của kiểu Chuỗi. Chuỗi là ý nghĩa bất biến một khi đối tượng được tạo, nó không thể thay đổi. Các đối tượng được tạo bằng các lớp bao bọc như Integer, Byte, Float, Double cũng không thay đổi. Một chuỗi ký tự được đặt trong dấu ngoặc kép. ví dụ. "Chào thế giới". Mỗi khi một chuỗi ký tự được tạo, Máy ảo Java (JVM) sẽ kiểm tra nhóm hằng số Chuỗi. Nếu Chuỗi tồn tại, một tham chiếu đến nhóm hằng số Chuỗi được trả về. Nếu đó là một Chuỗi mới, đối tượng đó được tạo trong nhóm hằng số Chuỗi.

Hình 01: Chương trình Java sử dụng String, StringBuffer và StringBuilder

Tham khảo đoạn mã dưới đây.

Chuỗi s1 = Hồi Xin chào;

s1 = s1 + ăn thế giới;

System.out.println (s1);

Trong câu lệnh đầu tiên, s1 đang đề cập đến nhóm Hello Hello trong nhóm hằng số Chuỗi. Trong câu lệnh thứ hai, JVM không thay đổi Chuỗi hiện có. Thay vào đó, nó tạo ra một Chuỗi mới như là Hello Hello World và s1 hiện đang đề cập đến Chuỗi mới đó. Đối tượng Hello Hello đã thoát vẫn tồn tại trong nhóm hằng chuỗi.

Nếu có một mã,

Chuỗi s1 = Sọ Xin chào;

Chuỗi s2 = s1;

Cả s1, s2 đều sẽ đề cập đến đối tượng String.

StringBuffer trong Java là gì?

Lớp StringBuffer được sử dụng để làm cho các đối tượng String có thể thay đổi. Do đó, những đối tượng có thể được sửa đổi. StringBuffer định nghĩa bốn hàm tạo. StringBuffer (), StringBuffer (int size), StringBuffer (String str), StringBuffer (charSequence [] ch)

Tham khảo mã dưới đây,

StringBuffer s1 = new StringBuffer (Thời gian Xin chào);

s1.append (Thế giới trực tuyến);

System.out.println (s1);

Trong câu lệnh 1, s1 đang đề cập đến đối tượng Hello Hello trong một đống. Đối tượng có thể thay đổi vì nó được tạo bằng StringBuffer. Trong câu lệnh 2, nhóm World World được gắn vào cùng một đối tượng Chuỗi Hello Hello.

Các đối tượng chuỗi được tạo bằng lớp StringBuffer có thể tiết kiệm bộ nhớ. StringBuffer cung cấp sự an toàn của luồng vì hai luồng không thể truy cập cùng một phương thức trong lớp StringBuffer. An toàn chủ đề giảm hiệu suất StringBuffer. Lớp StringBuffer chứa các phương thức như append (), insert (), Reverse (), thay thế ().

StringBuilder trong Java là gì?

Lớp StringBuilder được sử dụng để làm cho các đối tượng String có thể thay đổi. Do đó, những đối tượng có thể được sửa đổi. Chức năng tương tự như StringBuffer, nhưng điều này không cung cấp sự an toàn của luồng. StringBuilder có các hàm tạo như StringBuilder (), StringBuilder (int size), StringBuilder (String str).

Tham khảo mã dưới đây.

StringBuilder s1 = new StringBuilder (trong Hello Hello);

s1.append (Thế giới trực tuyến);

System.out.println (s1);

Trong câu lệnh 1, s1 đang đề cập đến đối tượng Hello Hello trong một đống. Đối tượng có thể thay đổi vì nó được tạo bằng StringBuilder. Trong câu lệnh 2, thì World World được gắn vào cùng một đối tượng Chuỗi Hello Hello. Không có tạo đối tượng String hoàn toàn mới.

Các đối tượng chuỗi được tạo bằng lớp StringBuilder có thể tiết kiệm bộ nhớ. Không giống như trong StringBuffer, StringBuilder không cung cấp sự an toàn của luồng vì hai luồng có thể truy cập cùng một phương thức trong lớp StringBuilder. Lớp StringBuilder chứa các phương thức như append (), insert (), Reverse (), thay thế ().

Sự giống nhau giữa String, StringBuffer và StringBuilder trong Java là gì?

  • Tất cả có thể được sử dụng để tạo Chuỗi.

Sự khác biệt giữa String StringBuffer và StringBuilder trong Java là gì?

Chuỗi vs StringBuffer vs StringBuilder

Chuỗi Chuỗi là một lớp Java được sử dụng để tạo một đối tượng có kiểu String, là một chuỗi các ký tự.
StringBuffer StringBuffer là một lớp Java được sử dụng để tạo các đối tượng String, có thể được sửa đổi với độ an toàn của luồng.
StringBuilder StringBuilder là một lớp được sử dụng để tạo các đối tượng chuỗi, có thể được sửa đổi mà không cần sự an toàn của luồng.
Khả năng biến đổi
Chuỗi Chuỗi là một lớp bất biến.
StringBuffer StringBuffer là một lớp có thể thay đổi.
StringBuilder StringBuilder là một lớp có thể thay đổi.
An toàn chủ đề
Chuỗi Các phương thức của String là thread an toàn.
StringBuffer Các phương thức của StringBuffer là an toàn và đồng bộ hóa luồng.
StringBuilder Các phương thức của StringBuilder không được xâu chuỗi an toàn và không được đồng bộ hóa.
Hiệu suất
Chuỗi Chuỗi nhanh.
StringBuffer StringBuffer chậm.
StringBuilder StringBuilder nhanh.

Tóm tắt - Chuỗi vs StringBuffer vs StringBuilder trong Java 

String, StringBuffer và StringBuilder có vẻ giống nhau, nhưng chúng có ý nghĩa khác nhau. Tất cả đều là các lớp Java. Sự khác biệt giữa String, StringBuffer và StringBuilder trong Java là, String là lớp để tạo một đối tượng kiểu String, là một tập hợp các ký tự, StringBuffer là một lớp được sử dụng để sửa đổi String và cung cấp sự an toàn của luồng, trong khi StringBuilder là một lớp được sử dụng để sửa đổi các Chuỗi không cung cấp sự an toàn của luồng.

Tải xuống Chuỗi PDF vs StringBuffer vs StringBuilder trong Java

Bạn có thể tải xuống phiên bản PDF của bài viết này và sử dụng nó cho mục đích ngoại tuyến theo ghi chú trích dẫn. Vui lòng tải xuống phiên bản PDF tại đây Sự khác biệt giữa String StringBuffer và StringBuilder trong Java

Tài liệu tham khảo:

1. Chuỗi String vs StringBuffer vs StringBuilder. Tạp chíDev, ngày 30 tháng 7 năm 2017. Có sẵn tại đây
2. Hung Java Hungry. Sự khác biệt giữa các lớp String, StringBuilder và StringBuffer với Ví dụ: Java | Đói Java. Có sẵn ở đây 
3.tutorialspoint.com. Các chuỗi Java Java. Điểm. Có sẵn ở đây