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)

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 (anull), 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ử ==!=.
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 ab 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!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!