STACKJAVA

Immutable là gì? Sự khác nhau giữa Immutable với Mutable

Immutable là gì? Sự khác nhau giữa Immutable với Mutable

1. Immutable là gì? Sự khác nhau giữa Immutable với mutable.

Ví dụ: Trong Java String là Immutable còn StringBuffer và StringBuilder là mutable.

 

1 Class/Đối tượng được coi là immutable nếu các thuộc tính của nó không bao giờ bị thay đổi và chỉ có thể thiết lập lúc khởi tạo.

// Khởi tạo str1 = "first"
String str1 = new String("first");

// Khởi tạo str2 tham chiếu tới str1
String str2 = str1;

// String là immutable, bất kì thao tác nào trên String đều tạo ra 1 đối tượng mới
// str1.concat("-second") sẽ trả về 1 đối tượng String mới có giá trị là "first-second"
str1 = str1.concat("-second");

System.out.println("str1: "+str1);
System.out.println("str2: "+str2);

Kết quả

str1: first-second
str2: first

// Khởi tạo str1 = "first"
StringBuffer str1 = new StringBuffer("first");

// Khởi tạo str2 tham chiếu tới str1
StringBuffer str2 = str1;

// StringBuffer là mutable, do đó khi append thì giá trị của nó sẽ thay đổi trên chính vùng nhớ ban dầu
str1.append("-second");

System.out.println("str1: "+str1);
System.out.println("str2: "+str2);

Kết quả:

str1: first-second
str2: first-second

2. Tại sao lại dùng Immutable

3. Cách tạo 1 Class Immutable

(Xem thêm: https://stackjava.com/java-core)