Trong Java chúng ta có hai loại biến là biến primitive và biến tham chiếu (hay còn có thể gọi là biến object reference). Biến primitive thì chúng ta đã tìm hiểu trong những bài trước, trong bài viết này mình sẽ cùng với các bạn tìm hiểu về biến object reference và sự khác nhau của nó với biến primitive nhé!
Biến object reference là gì?
Đối tượng là những thể hiện của một lớp, nó được tạo bằng cách sử dụng toán tử new, ví dụ như sau:
1 |
Student student = new Student(); |
khi đó một địa chỉ heap trong bộ nhớ chứa dữ liệu của đối tượng đó sẽ được trả về, và giá trị của địa chỉ này được gán cho một biến, và biến này gọi là biến tham chiếu, đối tượng này được gọi là đối tượng được tham chiếu.
Chúng ta có thể xem biến object reference như là một đối tượng quản lý đối tượng, cho phép chúng ta truy cập đến các thuộc tính của đối tượng đó.
Giá trị mặc định của biến tham chiếu là null nếu biến đó không được gán đến bất kỳ địa chỉ của đối tượng nào. Nghĩa là nó được khai báo như sau:
1 |
Student student; |
Sự khác nhau giữa biến primitive và biến tham chiếu
– Sự khác nhau cơ bản đầu tiên mà chúng ta có thể thấy rõ là biến primitive lưu trữ một giá trị nào đó, còn biến object reference chỉ lưu trữ địa chỉ trong memory của đối tượng mà nó tham chiếu tới.
Ví dụ:
1 |
int a = 100; |
và
1 |
Student student = new Student(); |
– Chúng ta sử dụng toán tử == để so sánh hai biến primitive, còn đối tượng biến object reference chúng ta phải sử dụng phương thức equals().
– Biến primitive chỉ có 8 kiểu dữ liệu còn biến object reference thì không giới hạn.
– Giá trị mặc định của biến object reference luôn luôn là null nếu nó không được gán giá trị, còn biến primitive có thể là 0, là false, là 0.0.
– Biến object reference thì không sử dụng được với các toán tử toán học, trong khi đó biến primitive có thể thao tác trên các toán tử đó.
– Biến object reference sẽ được bảo trì bởi garbage collection, khi nó không được sử dụng nữa thì sẽ bị hủy bởi garbage collection trong khi đó biến primitive thì không chịu sự quản lý của garbage collection.
Chuyen
Em chào anh #Khanh. Em không hiểu dõ lắm đoạn này. anh có thể giải thích dõ hơn và lấy ví dụ giúp em được không ạ. Cảm ơn anh.
Cụ thể là việc “Bảo trì” của biến object references
“Biến object reference sẽ được bảo trì bởi garbage collection, khi nó không được sử dụng nữa thì sẽ bị hủy bởi garbage collection trong khi đó biến primitive thì không chịu sự quản lý của garbage collection.
Dũng
cho em xin địa chỉ face kêt bạn anh
Khanh Nguyen
Em subscribe Fanpage của Hướng Dẫn Java đi 😀