Sự khác biệt giữa Mutable và Immutable trong Java là gì?



Bài viết này về Mutable và Immutable trong Java là một hướng dẫn toàn diện về sự khác biệt giữa chúng và cũng thảo luận về lý do tại sao các chuỗi java là bất biến.

Java là một trong những phổ biến nhất cung cấp các khái niệm khác nhau để tạo ứng dụng, và một khái niệm như vậy là Mutable And Immutable trong Java. Chà, khái niệm này dựa vào việc thực hiện các thay đổi đối với các trường sau khi tạo đối tượng và do đó dễ dàng lập trình cho . Vì vậy, trong bài viết này về có thể thay đổi và bất biến trong Java, tôi sẽ thảo luận về các chủ đề sau:

Đối tượng Mutable là gì?





Các đối tượng mà bạn có thể thay đổi trường và trạng thái sau khi đối tượng được tạo được gọi là đối tượng có thể thay đổi. Thí dụ : java.util.Date, StringBuilder, v.v.

Đối tượng Immutable là gì?



Các các đối tượng trong đó bạn không thể thay đổi bất cứ điều gì khi đối tượng được tạo ra được gọi là đối tượng Bất biến. Thí dụ : Các đối tượng nguyên thủy được đóng hộp như Số nguyên, Dài và v.v.

Vì vậy, bây giờ bạn đã biết những gì có thể thay đổi và bất biến trong java, hãy cùng chúng tôi tiếp tục và xem sự khác biệt giữa hai điều này.

Sự khác biệt giữa các đối tượng có thể thay đổi và bất biến



các phiên bản trong java là gì

Bạn có thể tham khảo bảng sau để biết sự khác biệt giữa các đối tượng có thể thay đổi và không thể thay đổi trong Java.

Có thể thay đổi Bất biến
Các trường có thể được thay đổi sau khi tạo đối tượngKhông thể thay đổi các trường sau khi tạo đối tượng
Nói chung cung cấp một phương pháp để sửa đổi giá trị trườngKhông có bất kỳ phương pháp nào để sửa đổi giá trị trường
Có phương thức Getter và SetterChỉ có phương thức Getter
Ví dụ: StringBuilder, java.util.DateVí dụ: Chuỗi, các đối tượng nguyên thủy được đóng hộp như Số nguyên, Dài, v.v.

Bây giờ bạn đã biết sự khác biệt giữa các đối tượng có thể thay đổi và không thể thay đổi, hãy cùng chúng tôi tìm hiểu cách tạo các lớp học.

Làm thế nào để tạo một lớp Mutable?

Để tạo một lớp có thể thay đổi trong Java, bạn phải đảm bảo các yêu cầu sau được thỏa mãn:

  1. Cung cấp một phương pháp để sửa đổi các giá trị trường
  2. Phương pháp Getter và Setter

Hãy xem xét đoạn mã sau:

package edureka public class example {private String coursename example (String coursename) {this.coursename = coursename} public String getName () {return coursename} public void setName (String coursename) {this.coursename = coursename} public static void main (String [] args) {example obj = new example ('Machine Learning') System.out.println (obj.getName ()) // cập nhật tên, đối tượng này là Hệ thống có thể thay đổi được obj.setName ('Machine Learning Masters'). out.println (obj.getName ())}}

Bạn sẽ thấy kết quả sau:

Đầu ra đối tượng có thể thay đổi - Có thể thay đổi và bất biến trong Java- Edureka

Vì vậy, bây giờ bạn đã biết cách tạo một lớp có thể thay đổi, tiếp theo trong bài viết này, chúng ta hãy xem xét cách tạo một lớp bất biến.

Làm thế nào để tạo một lớp Immutable?

Để tạo một lớp không thay đổi trong Java, bạn phải đảm bảo các yêu cầu sau được thỏa mãn:

Ide trong java là gì
  1. Một lớp nên được khai báo là sau cùng vì vậy nó không thể được mở rộng.
  2. Tất cả các trường phải được đặt ở chế độ riêng tư để không được phép truy cập trực tiếp
  3. Không có phương pháp setter
  4. Đặt tất cả các trường có thể thay đổi thành cuối cùng để chúng chỉ có thể được gán một lần.
package edureka public class exampleimmutable {private final String coursename exampleimmutable (final String coursename) {this.coursename = coursename} public final String getName () {return coursename} public static void main (String [] args) {example obj = new example ( 'Học máy') System.out.println (obj.getName ())}}

Bạn sẽ thấy kết quả bên dưới:

Được rồi, bây giờ bạn đã biết về các đối tượng có thể thay đổi và bất biến, hãy để tôi nói với bạn rằng Chuỗi là bất biến trong Java. Bây giờ, tôi chắc chắn rằng điều này có thể đã đặt ra một câu hỏi, về lý do tại sao các chuỗi là bất biến trong Java. Vì vậy, tiếp theo trong bài viết này, chúng ta hãy cùng xem xét.

Tại sao chuỗi bất biến trong Java?

Java sử dụng các khái niệm về . Vì vậy, nếu bạn xem xét một ví dụ trong đó bạn có nhiều biến tham chiếu tham chiếu đến một đối tượng, thì ngay cả khi một biến tham chiếu thay đổi giá trị của vật , tự động tất cả các biến tham chiếu khác sẽ bị ảnh hưởng. Ngoài ra, theo Java hiệu quả ,chương 4, trang 73, ấn bản thứ 2, sau đây là những lý do để sử dụng các lớp Immutable:

  • Các đối tượng bất biến rất đơn giản
  • Các đối tượng này không yêu cầu đồng bộ hóa và vốn dĩ an toàn theo chuỗi
  • Các đối tượng bất biến tạo nên các khối xây dựng tốt cho các đối tượng khác

Nếu tôi phải giải thích cho bạn một ví dụ, thì,

Hãy để chúng tôi nói rằng bạn có một biến lấy mẫu , nơi lưu trữ chuỗi “ Học máy “. Bây giờ, nếu bạn nối chuỗi này với chuỗi khác ' Thạc sĩ ', thì đối tượng được tạo cho “ Học máy ' sẽ không thay đổi. Thay vào đó, một đối tượng mới sẽ được tạo cho “ Thạc sĩ học máy “. Tham khảo hình ảnh bên dưới:

Như bạn có thể thấy trong hình trên, lấy mẫu biến tham chiếu đề cập đến 'Học máy', chứ không phải chuỗi khác, ngay cả sau khi tạo hai đối tượng. Với điều này, chúng ta kết thúc bài viết này về Mutable và Immutable trong Java. Tôi hy vọng các bạn rõ ràng về từng khía cạnh mà tôi đã thảo luận ở trên.

Bây giờ bạn đã hiểu cơ bản về Java, hãy xem của Edureka, một công ty học trực tuyến đáng tin cậy với mạng lưới hơn 250.000 người học hài lòng trải dài trên toàn cầu. Khóa đào tạo và cấp chứng chỉ về Java J2EE và SOA của Edureka được thiết kế cho sinh viên và các chuyên gia muốn trở thành Nhà phát triển Java. Khóa học được thiết kế để cung cấp cho bạn khởi đầu về lập trình Java và đào tạo bạn về cả khái niệm Java cốt lõi và nâng cao cùng với các khung Java khác nhau như Hibernate & Spring.

Có một câu hỏi cho chúng tôi? Vui lòng đề cập đến nó trong phần nhận xét của blog “Có thể thay đổi và bất biến trong Java” này và chúng tôi sẽ liên hệ lại với bạn trong thời gian sớm nhất.