So sánh và sắp xếp trong Java

I : Kiểu nguyên thủy và kiểu tham chiếu trong java


1.Phân loại
-> Chúng ta có 8 kiểu nguyên thủy : Boolean , Integer , float , double ,byte , short,long và char
-> Tất cả kiểu khác được mở rộng Object chúng là kiểu tham chiếu (sử dụng từ khóa new).


2.Các kiểu biến nguyên thủy lưu trữ như thế nào trong bộ nhớ ?



-> Trong java sẽ không có một vị trí xác định để lưu trử giá trị cho một biến mà nó sẽ sử dụng một các linh động , nó sẽ theo dõi quá trình sử dụng code để phân phối bộ nhớ cho phù hợp


Ví dụ :





+ Đầu tiên chúng ta khởi tạo biến a và gán giá trị cho nó lúc này biến a sẽ trỏ đến một vùng nhớ lưu trữ giá trị 100
+ Sau khi gán biến a cho giá trị khác thì biến a sẽ trỏ đến vùng nhớ khác
+ Khi gán biến b =a thì biến b sẽ trỏ đến vùng nhớ khác nhưng cũng lưu giá trị 200(Đây là sự khác biệt lớn nhất khi so với kiểu Object)
+ Các biến nguyên thủy sẽ không bao giờ cùng trỏ đến một vùng nhớ kể cả giá trị nó giống nhau..nếu giống nhau thì cũng chỉ là ngẫu nhiên.
+ Khi chúng ta so sánh 2 đối tượng kiểu nguyên thủy theo(== hay equal ) thì chúng sẽ so sánh với nhau bằng giá trị đây cũng là một sự khác biệt khi so sánh với kiểu tham chiếu.

Ví dụ cho đoạn code


Kết quả : 
-> Ở kiểu biến nguyên thủy khi so sánh bằng cả 2 cách thông thường nó sẽ không quan tâm đến địa chỉ mà chỉ qua tâm đến giá trị.







III.Các biến tham chiếu lưu trong bộ nhớ và được so sánh như thế nào ?

1.Khai báo , khởi tạo và gán giá trị : 
+ Khi bạn khai báo : Object a;
+ Khi bạn khởi tạo : Object a = new Object(); (chú ý từ khóa new) thì chương trình sẽ tạo ra một thực thể trong bộ nhớ và biến a sẽ trỏ đến thực thể này trong vùng nhớ.
+ Khi bạn gán giá trị Object a = new String("this is Text");
+ Khi bạn khởi tạo đối tượng b và trỏ đến cùng một thực thể với đối tượng a. Object b = a;





+ Khi chúng ta khai báo từ khóa new thì một thực thể được tạo ra  



2. So sánh ở kiểu biến tham chiếu.

Cho ví bạn thử đoán kết quả của chương trình này :


Kết quả :


+ Khi sử dụng toán tử (==) ở biến tham chiếu thì chúng ta so sánh xem chúng có cùng trỏ tới một vị trí hay không
=> a và b != vì mỗi biến đã khai báo một từ khóa new nên chúng sẽ không trỏ đến cùng một vị trí
=> a và c == vì biến c chưa khai báo từ khóa new nên c sẽ trỏ đến cùng một vị trí.
++++> Kết luận : so sánh 2 biến tham chiếu với toán tử (==) thì chúng ta sẽ so sánh xem chúng có cùng trỏ đến một vị trí không ?.



+ Khi sử dụng từ khóa (equal()) ở biến tham chiếu thì nó sẽ chỉ quan tâm đến giá trị của vùng nhớ mà 2 biến trỏ đến
=>  cả 2 dòng đều là true.



3 : Trường hợp đặc biệt so sánh biến tham chiếu và biến nguyên thủy.
Cho ví dụ bạn hãy đoán kết quả của chương trình này :
Kết quả :
=> Ở trường hợp này sẽ áp dụng theo cách so sánh của kiểu biến nguyên thủy (chỉ quan tâm đến kết quả).

+ Ở những bài sau mình sẽ giải thích rõ về tại sao vẫn có thể tạo đối tượng từ các biến nguyên thủy và cách truyền đối số cho hàm để bổ sung nội dung cho bài học này.

Nhận xét

Bài đăng phổ biến