Video: Java Nâng Cao 09 Comparator trong Java 2025
Khi bạn bắt đầu làm việc với các đối tượng trong Java, bạn thấy rằng bạn có thể sử dụng == và! = để so sánh các đối tượng với nhau. Ví dụ, một nút mà bạn nhìn thấy trên màn hình máy tính là một đối tượng. Bạn có thể hỏi xem liệu điều mà chỉ cần nhấp chuột là một nút cụ thể trên màn hình của bạn. Bạn làm điều này với toán tử bình đẳng của Java.
nếu (ví dụ: getSource () == bCopy) {clipboard. setText (trong đó. getText ());
Các gotcha lớn với Java của chương trình so sánh đến khi bạn so sánh hai dây. Khi bạn so sánh hai chuỗi với nhau, bạn không muốn sử dụng dấu hai bằng. Bằng cách sử dụng dấu hai chấm sẽ hỏi "Chuỗi này được lưu trữ trong chính xác cùng một chỗ trong bộ nhớ như chuỗi kia không? "Thông thường, đó không phải là điều bạn muốn hỏi.
Thay vào đó, bạn thường muốn hỏi: "Chuỗi này có các ký tự giống như chuỗi đó không? "Để đặt câu hỏi thứ hai (câu hỏi thích hợp hơn) Loại String của Java có một phương thức có tên bằng. (Giống như mọi thứ khác trong vũ trụ đã biết, phương thức equals này được định nghĩa trong Java API, viết tắt của Application Programming Interface).
Phương thức equals so sánh hai chuỗi để xem họ có cùng ký tự trong đó không. Đối với một ví dụ bằng cách sử dụng phương pháp Java bằng, xem danh sách mã này. (Hình minh hoạ cho một chương trình trong danh sách.)
nhập tĩnh java. lang. Hệ thống. *; nhập khẩu java. util. Máy quét; lớp công khai CheckPassword {public static void main (String args []) {out. in ("Mật khẩu là gì?"); Máy quét bàn phím = máy quét mới (trong); Chuỗi mật khẩu = bàn phím. kế tiếp(); ngoài. println ("Bạn đã đánh máy >>" + mật khẩu + "<<"); ngoài. println (); nếu (mật khẩu == "cá kiếm") {out. println ("Từ bạn nhập đã được lưu trữ"); ngoài. println ("ở cùng nơi với thực tế"); ngoài. println ("mật khẩu Bạn phải là một"); ngoài. println ("hacker.");} khác {out. println ("Từ bạn nhập không phải là"); ngoài. println ("được lưu trữ ở cùng nơi với"); ngoài. println ("mật khẩu thật, nhưng đó là"); ngoài. println ("không có vấn đề lớn.");} ra. println (); if (mật khẩu bằng ("swordfish")) (out. println ("Từ mà bạn gõ đã có"); ngoài. println ("cùng ký tự như là thật"); ngoài. println ("mật khẩu Bạn có thể sử dụng chúng tôi"); ngoài. println ("hệ thống quý giá");} khác {out. println ("Từ mà bạn gõ không"); ngoài. println ("có các ký tự giống như"); ngoài. println ("mật khẩu thật sự Bạn không thể"); ngoài. println ("sử dụng hệ thống quý giá của chúng tôi.");} bàn phím. close ();}}
Trong danh sách, bàn phím gọi. tiếp theo () grabs bất cứ từ nào người sử dụng gõ trên bàn phím máy tính. Mã shoves từ này vào biến có tên mật khẩu. Sau đó các câu lệnh if của chương trình sử dụng hai kỹ thuật khác nhau để so sánh mật khẩu với "swordfish".
Các ví dụ trong sách được in chủ yếu là dựa trên văn bản, nhưng bạn có thể tìm thấy các phiên bản kỳ thú của hầu hết các ví dụ trên trang web Dummies. Những phiên bản thú vị này có cửa sổ, các nút, các lĩnh vực văn bản và các phần tử khác của một giao diện người dùng đồ họa điển hình (GUI) điển hình. Sự thích hợp của hai kỹ thuật này sử dụng phương pháp bình đẳng của Java. Phương pháp equals trông buồn cười bởi vì khi bạn gọi nó, bạn đặt một dấu chấm sau một chuỗi và đặt chuỗi khác trong dấu ngoặc đơn. Nhưng đó là cách bạn phải làm điều đó.
Khi gọi phương thức equals của Java, không quan trọng là chuỗi nào được dấu chấm và dấu ngoặc đơn. Ví dụ, trong danh sách, bạn có thể viết
nếu ("swordfish") bằng (mật khẩu).
Phương pháp này cũng hoạt động tốt.
Một cuộc gọi đến phương pháp equals của Java sẽ mất cân bằng, nhưng nó không phải. Có một lý do đằng sau sự mất cân bằng hiển nhiên giữa dấu chấm và dấu ngoặc. Ý tưởng là bạn có hai đối tượng: đối tượng mật khẩu và đối tượng "swordfish".
Mỗi trong hai đối tượng này thuộc kiểu String. (Tuy nhiên, mật khẩu là một biến kiểu String và "swordfish" là một ký tự String) Khi bạn viết mật khẩu. bằng ("swordfish"), bạn đang gọi một phương thức equals thuộc đối tượng mật khẩu. Khi bạn gọi phương pháp đó, bạn đang cho "swordfish" phương pháp như là tham số của phương pháp (chơi chữ theo ý định).
Khi so sánh các dây với nhau, sử dụng phương pháp bằng - không phải là dấu hai bằng.