Computer >> Máy Tính >  >> Lập trình >> Java

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

Chuỗi là một lớp bất biến và đối tượng của nó không thể sửa đổi sau khi được tạo nhưng chắc chắn tham chiếu đến các đối tượng khác. Chúng rất hữu ích trong môi trường đa luồng vì nhiều luồng không thể thay đổi trạng thái của đối tượng nên các đối tượng không thay đổi được là luồng an toàn.

Bộ đệm chuỗi là các lớp có thể thay đổi, có thể được sử dụng để thực hiện hoạt động trên đối tượng chuỗi như đảo ngược chuỗi, nối chuỗi, v.v. Chúng ta có thể sửa đổi chuỗi mà không cần tạo đối tượng mới của chuỗi. Bộ đệm chuỗi cũng an toàn cho chuỗi.

Ngoài ra, toán tử chuỗi concat + sử dụng nội bộ lớp StringBuffer hoặc StringBuilder. Dưới đây là những điểm khác biệt.

Sr. Không. Phím Chuỗi StringBuffer
1
Cơ bản
Chuỗi là một lớp bất biến và không thể sửa đổi đối tượng của nó sau khi nó được tạo
Bộ đệm chuỗi là các lớp có thể thay đổi có thể được sử dụng để thực hiện hoạt động trên đối tượng chuỗi
2
Phương thức
Các phương thức không được đồng bộ hóa
Tất cả các phương thức được đồng bộ hóa trong lớp này.
3
Hiệu suất
Nó nhanh
Nhiều luồng không thể truy cập cùng lúc do đó chậm
4.
Vùng nhớ
I f a Chuỗi được tạo bằng cách sử dụng hàm tạo hoặc phương thức sau đó các chuỗi đó sẽ được lưu trữ trong Bộ nhớ Heap cũng như SringConstantPool
Không gian đống

Ví dụ về chuỗi

public class Main {
   public static void main(String args[]) {
      String s1 = "Hello Tutorials Point";
      String upperCase = s1.toUpperCase();
      System.out.println(upperCase);
   }
}

Ví dụ về StringBuffer

public class StringBufferExample{
   public static void main(String[] args){
      StringBuffer buffer=new StringBuffer("Hi");
      buffer.append("Java 8");
      System.out.println("StringBufferExample" +buffer);
   }
}