Đề XuấT, 2024

Editor Choice

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

Cả String và StringBuffer đều là các lớp hoạt động trên chuỗi. Lớp StringBuffer là lớp ngang hàng của lớp String. Đối tượng của lớp String có độ dài cố định. Đối tượng của lớp StringBuffer có thể phát triển được. Sự khác biệt cơ bản giữa String và StringBuffer là đối tượng của lớp Chuỗi String là bất biến . Đối tượng của lớp String StringBuffer Đột biến .

Biểu đồ so sánh

Cơ sở để so sánhChuỗiStringBuffer
Căn bảnĐộ dài của đối tượng String là cố định.Độ dài của StringBuffer có thể được tăng lên.
Sửa đổiĐối tượng chuỗi là bất biến.Đối tượng StringBuffer có thể thay đổi.
Hiệu suấtNó là chậm hơn trong quá trình nối.Nó là nhanh hơn trong quá trình nối.
Ký ứcTiêu thụ nhiều bộ nhớ hơn.Tiêu thụ ít bộ nhớ.
Lưu trữChuỗi liên tục pool.Bộ nhớ đống.

Định nghĩa chuỗi

Chuỗi String là một lớp trong Java. Đối tượng của Chuỗi lớp có độ dài cố định và quan trọng nhất cần nhớ, đối tượng của lớp Chuỗi là Hồi bất biến. Khi bạn khởi tạo đối tượng String, bạn không thể sửa đổi đối tượng đó một lần nữa. Đối tượng của Chuỗi lớp được lưu trữ trong nhóm hằng chuỗi.

Trước tiên chúng ta hãy hiểu rằng, bất cứ khi nào bạn tạo bất kỳ chuỗi nào; bạn tạo một đối tượng của kiểu chuỗi. Các hằng chuỗi cũng là các đối tượng chuỗi.

 System.out.println ("Xin chào, đây là Giải pháp Teckpix"); 

Trong câu lệnh trên, chuỗi này Xin chào, đây là Teckpix Solution, là một hằng chuỗi.

Bây giờ chúng ta hãy hiểu tính khả biến của đối tượng String với sự trợ giúp của một ví dụ.

 Chuỗi str = Chuỗi mới ("Teckpix"); str.concat ("Giải pháp"); system.out.println (str); // đầu ra Teckpix 

Trong đoạn mã trên, tôi đã cố gắng ghép hai chuỗi dây Teckpix và một giải pháp. Như chúng ta biết bất cứ khi nào một chuỗi được tạo có nghĩa là đối tượng của kiểu String được tạo. Do đó, chuỗi Teckpix Hướng tạo ra một đối tượng, có tham chiếu được gán cho đối tượng chuỗi đó là str str. Tiếp theo, tôi đã thử nối một chuỗi khác Solution Solution với chuỗi Chuỗi Teckpix phối bằng cách sử dụng phương thứciên concat () của chuỗi lớp.

Vì các đối tượng String là bất biến, nên không có sửa đổi nào được thực hiện đối với chuỗi, Teckpix, và chuỗi mới Giải pháp tạo ra một đối tượng khác trong nhóm hằng số chuỗi. Nhưng, tham chiếu đến đối tượng, Giải pháp đối tượng không bị bắt bởi bất kỳ đối tượng nào do đó tham chiếu đến đối tượng Giải pháp bị mất mặc dù nó vẫn hiện diện trong nhóm hằng số chuỗi. Vì không có sửa đổi nào được thực hiện cho đối tượng Teckpix, khi tôi in str đối tượng mà tôi đã gán tham chiếu của Teckpix trước đó, sẽ chỉ in chuỗi Chuỗi Teckpix.

Định nghĩa của StringBuffer

Lớp String String Stringuffuff là lớp ngang hàng của lớp Chuỗi String. Lớp StringBuffer cung cấp nhiều chức năng hơn cho các chuỗi. Đối tượng của lớp StringBuffer có thể thay đổi là đối tượng của nó có thể được sửa đổi. Độ dài của đối tượng StringBuffer có thể phát triển được. Bạn có thể chèn các ký tự hoặc chuỗi con ở giữa chuỗi ký tự được gán cho đối tượng StringBuffer hoặc ở cuối của nó. StringBuffer phân bổ không gian cho 16 ký tự bổ sung khi không yêu cầu độ dài cụ thể.

Hãy cho chúng tôi hiểu khả năng biến đổi của đối tượng StringBuffer với sự trợ giúp của một ví dụ:

 StringBuffre Sb = new StringBuffer ("Teckpix"); Sb.append ("Giải pháp"); system.out.println (Sb); // Giải pháp Teckpix đầu ra 

Như chúng ta biết rằng đối tượng StringBuffer có thể thay đổi. Phương thức append () sửa đổi đối tượng StringBuffer Sb mà ban đầu, tham chiếu của đối tượng Khăn Teckpix ấn được gán trước đó. Phương thức append () nối thêm chuỗi mới Giải pháp chữ lồng, đến cuối chuỗi ký tự theo nghĩa đen Teckpix. Bây giờ khi tôi in đối tượng Sb, nó sẽ in đối tượng chuỗi đã sửa đổi, Teckpix Solutions, đã được sửa đổi.

Sự khác biệt chính giữa String và StringBuffer

  1. Độ dài của đối tượng String là cố định nhưng chiều dài của đối tượng StringBuffer có thể tăng lên khi được yêu cầu.
  2. Đối tượng chuỗi là bất biến, tức là đối tượng của nó không thể được gán lại lần nữa trong khi đó, đối tượng của StringBuffer có thể thay đổi.
  3. Đối tượng chuỗi có hiệu suất chậm hơn trong khi đối tượng StringBuffer nhanh hơn.
  4. Đối tượng chuỗi tiêu thụ nhiều bộ nhớ hơn trong khi các đối tượng StringBuffer tiêu thụ ít bộ nhớ hơn.
  5. Các đối tượng chuỗi được lưu trữ trong một nhóm không đổi trong khi đó, các đối tượng StringBuffer được lưu trữ trên bộ nhớ heap.

Phần kết luận:

Các đối tượng StringBuffer cung cấp nhiều chức năng hơn cho các chuỗi so với Chuỗi lớp. Do đó, tốt hơn là làm việc với StringBuffer thay vì String lớp.

Top