Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

So Sánh Chuỗi Trong Java Với equals() Và equalsIgnoreCase()

Chuỗi (String) là kiểu dữ liệu dùng lưu trữ dữ liệu dựa trên văn bản trong Java. Khi làm việc với chuỗi, bạn có thể gặp tình huống muốn so sánh hai chuỗi với nhau.

Đó là lúc phương thức equals() và equalsIgnoreCase() của chuỗi Java phát huy tác dụng. Phương thức equals() dùng kiểm tra hai chuỗi có bằng nhau không, và equalsIgnoreCase() dùng so sánh hai chuỗi có bằng nhau không đồng thời bỏ qua chữ hoa chữ thường.

Hướng dẫn này sẽ đi qua, kèm ví dụ, cách dùng phương thức equals() và equalsIgnoreCase() của chuỗi trong Java. Sau khi đọc xong bài viết, bạn sẽ thành chuyên gia so sánh chuỗi dùng các phương thức này trong Java.

Chuỗi Trong Java

Chuỗi dùng lưu trữ văn bản và có thể bao gồm chữ cái, số, ký hiệu, và khoảng trắng. Ví dụ, chuỗi có thể bao gồm tên khách hàng tại cửa hồ may, hoặc địa chỉ nhà cung cấp cho cửa hàng may.

Trong Java, chuỗi khai báo là dãy ký tự đặt giữa dấu ngoặc kép. Ví dụ chuỗi Java:

String favoriteCoffeeShop = "Central Perk";

Trong ví dụ này, khai báo biến favoriteCoffeeShop gán giá trị Central Perk.

Đối tượng chuỗi Java bất biến (immutable), nghĩa là sau khi chuỗi tạo ra, cần dùng phương thức equals() so sánh với chuỗi khác. Bây giờ đã biết cơ bản về chuỗi, có thể thảo luận phương thức equals() và equalsIgnoreCase() của chuỗi.

Phương Thức equals() Của Chuỗi Java

Phương thức equals() của chuỗi Java dùng so sánh đối tượng và kiểm tra nội dung hai chuỗi có bằng nhau không.

equals() chấp nhận một tham số: chuỗi bạn muốn so sánh với chuỗi khác. Cú pháp phương thức equals() của chuỗi:

stringName.equals(string2Name);

Phân tích:

  • stringName là tên chuỗi gốc muốn so sánh với string2Name
  • equals() là phương thức dùng so sánh stringName với string2Name.
  • string2Name là chuỗi muốn so sánh với stringName.

Phương thức equals() trả về giá trị boolean dựa trên việc chuỗi có bằng nhau. Nếu hai chuỗi bằng nhau, giá trị true trả về; ngược lại, false trả về.

Phương thức equals() của chuỗi phân biệt chữ hoa chữ thường (case sensitive). Vì vậy, nếu hai chuỗi chứa cùng ký tự nhưng dùng chữ hoa chữ thường khác nhau, equals() trả về false.

Ví Dụ equals() Của Chuỗi Java

Giả sử điều hành khách sạn và viết chương trình hợp lý hóa giai đoạn check-in. Khi khách check-in, họ đưa tên và mã đặt phòng. Chúng ta so sánh mã đặt phòng khách đưa với mã lưu cùng tên họ trong hồ sơ, để xác thực danh tính khách.

Có thể dùng mã sau so sánh mã đặt phòng trong hồ sơ với mã khách cung cấp:

class Main { public static void main(String args[]) { String onFileBookingReference = "#ST2920198"; String customerGivenBookingReference = "#ST2920198"; boolean areEqual = onFileBookingReference.equals(customerGivenBookingReference); if (areEqual == true) { System.out.println("This booking is confirmed."); } else { System.out.println("The booking reference provided does not match the one on-file."); } } } 

Mã trả về:

This booking is confirmed.

Phân tích mã:

  1. Khai báo biến onFileBookingReference lưu mã đặt phòng liên kết với tên khách.
  2. Khai báo biến customerGivenBookingReference lưu mã đặt phòng khách đưa cho nhân viên quầy check-in.
  3. Dùng phương thức equals() kiểm tra onFileBookingReference có bằng customerGivenBookingReference không, gán kết quả cho biến areEqual.
  4. Câu lệnh if kiểm tra areEqual có bằng true không.
    1. Nếu areEqual bằng true, thông báo This booking is confirmed. in ra bảng điều khiển.
    2. Nếu areEqual bằng false, thông báo The booking reference provided does not match the one on-file. in ra bảng điều khiển.

Trong ví dụ này, khách đưa mã đặt phòng đúng, nên chương trình xác nhận đặt phòng.

Phương Thức equalsIgnoreCase() Của Chuỗi Java

Phương thức equalsIgnoreCase() của chuỗi dùng so sánh hai chuỗi bỏ qua chữ hoa chữ thường. equalsIgnoreCase() dùng cú pháp giống equals():

stringName.equalsIgnoreCase(string2Name);

Bây giờ, hãy đi qua ví dụ minh họa phương thức này trong thực tế.

Giả sử muốn viết chương trình kiểm tra tên khách có khớp tên liên kết với mã đặt phòng đã cho. Kiểm tra này nên không phân biệt chữ hoa chữ thường để lỗi viết hoa không khiến đặt phòng bị mất bởi nhân viên check-in.

Có thể dùng mã sau so sánh tên khách với tên liên kết mã đặt phòng:

class Main { public static void main(String args[]) { String onFileName = "Gregory Lamont"; String customerName = "gregory lamont"; boolean areEqual = onFileName.equalsIgnoreCase(customerName); if (areEqual == true) { System.out.println("This booking is confirmed."); } else { System.out.println("The customer name provided does not match the one on-file."); } } } When we run our code, the following response is returned: This booking is confirmed. 

Khi chạy mã, phản hồi sau trả về:

This booking is confirmed.

Tên khách lưu trong hồ sơ là Gregory Lamont, nhưng tên khách nhân viên nhập là gregory lamont. Nếu dùng equals(), hai chuỗi không được coi giống nhau vì chữ hoa chữ thường khác nhau.

Tuy nhiên, trong ví dụ này, dùng equalsIgnoreCase(), bỏ qua chữ hoa chữ thường của ký tự chuỗi.

Kết Luận

Phương thức equals() của chuỗi dùng kiểm tra hai chuỗi có chính xác bằng nhau. Phương thức equalsIgnoreCase() dùng kiểm tra hai chuỗi có bằng nhau không, bất kể chữ hoa chữ thường.

Hướng dẫn này đi qua cách dùng phương thức equals() và equalsIgnoreCase() của chuỗi trong Java, kèm hai ví dụ. Bây giờ bạn sẵn sàng so sánh chuỗi trong Java dùng equals() và equalsIgnoreCase() như chuyên gia!