Chào mừng độc giả đến với Cafedev – nơi chia sẻ kiến thức và đam mê lập trình! Hôm nay, chúng ta sẽ khám phá sâu hơn về Kotlin với chủ đề “Kotlin with Equality”. Trong ngôn ngữ lập trình này, Cafedev giới thiệu hai loại bằng nhau: _Cấu trúc_ (`==`) – kiểm tra `equals()` và _Tham chiếu_ (`===`) – hai tham chiếu trỏ đến cùng một đối tượng. Đồng thời, hãy tìm hiểu cách Kotlin xử lý bằng nhau trong các trường hợp đặc biệt như số dấu chấm động và mảng. Bắt đầu hành trình khám phá Kotlin tại Cafedev ngay hôm nay!”
Trong Kotlin, có hai loại bằng nhau:
* Bằng nhau Cấu trúc (==
– kiểm tra cho equals()
)
* Bằng nhau Tham chiếu (===
– hai tham chiếu trỏ đến cùng một đối tượng)
Nội dung chính
1. So sánh bằng nhau về Cấu trúc
Bằng nhau cấu trúc được kiểm tra bằng phép thực hiện ==
và đối lập !=
. Theo quy ước, biểu thức như a == b
được chuyển đổi thành:
a?.equals(b) ?: (b === null)
Nếu a
không phải là null
, nó gọi hàm equals(Any?)
, ngược lại (a
là null
), nó kiểm tra xem b
có bằng nhau tham chiếu với null
không.
Lưu ý rằng không cần thiết phải tối ưu hóa mã của bạn khi so sánh với null
một cách tường minh: a == null
sẽ tự động được chuyển đổi thành a === null
.
Để cung cấp một triển khai kiểm tra bằng nhau tùy chỉnh, ghi đè hàm equals(other: Any?): Boolean. Các hàm có cùng tên và các chữ ký khác, như equals(other: Foo)
, không ảnh hưởng đến kiểm tra bằng nhau với các toán tử ==
và !=
.
Bằng nhau cấu trúc không liên quan gì đến so sánh được định nghĩa bởi giao diện Comparable<...>
, vì vậy chỉ triển khai tùy chỉnh equals(Any?)
có thể ảnh hưởng đến hành vi của toán tử.
2. So sáng bằng nhau với Tham chiếu
Bằng nhau tham chiếu được kiểm tra bằng phép thực hiện ===
và đối lập !==
. a === b
đánh giá thành đúng chỉ nếu a
và b
trỏ đến cùng một đối tượng. Đối với giá trị được biểu diễn bằng kiểu nguyên thủy khi chạy (ví dụ, Int
), kiểm tra bằng nhau ===
tương đương với kiểm tra ==
.
3. So sánh bằng nhau với số dấu chấm động
Khi các toán hạng kiểm tra bằng nhau được biết tĩnh là Float
hoặc Double
(có thể là null hoặc không), kiểm tra tuân theo Tiêu chuẩn IEEE 754 về Toán học Dấu chấm động.
Ngược lại, sẽ sử dụng bằng nhau cấu trúc, điều này không phù hợp với tiêu chuẩn, sao cho NaN
bằng chính nó, NaN
được coi là lớn hơn bất kỳ phần tử nào khác, bao gồm cả POSITIVE_INFINITY
, và -0.0
không bằng 0.0
.
4. So sánh bằng nhau với Mảng
Để so sánh xem hai mảng có các phần tử giống nhau theo cùng một thứ tự không, sử dụng contentEquals().
Cảm ơn bạn đã đọc bài viết về “Kotlin with Equality” trên Cafedev! Chúng tôi hy vọng rằng bạn đã có những hiểu biết mới và thú vị về cách Kotlin xử lý bằng nhau. Đừng ngần ngại đặt câu hỏi hoặc chia sẻ ý kiến tại Cafedev để chúng tôi có thể tương tác trực tiếp với cộng đồng. Hãy tiếp tục theo dõi để không bỏ lỡ những nội dung thú vị khác từ Cafedev. Cảm ơn bạn đã đồng hành cùng chúng tôi trên hành trình này!”
Các nguồn kiến thức MIỄN PHÍ VÔ GIÁ từ cafedev tại đây
Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của Cafedev để nhận được nhiều hơn nữa:
Chào thân ái và quyết thắng!