Nếu bạn giống tôi, khi tôi mới bắt đầu sử dụng Java, tôi muốn sử dụng toán tử "==" để kiểm tra xem hai cá thể Chuỗi có bằng nhau hay không, nhưng tốt hơn hay xấu hơn, đó không phải là cách chính xác để làm điều đó trong Java.
Trong hướng dẫn này, tôi sẽ trình bày một số cách khác nhau để so sánh chính xác các chuỗi Java, bắt đầu với cách tiếp cận tôi sử dụng hầu hết thời gian. Ở phần cuối của hướng dẫn so sánh Chuỗi Java này, tôi cũng sẽ thảo luận tại sao toán tử "==" không hoạt động khi so sánh các chuỗi Java.
Tùy chọn 1: So sánh chuỗi Java với phương thức bằng nhau
Hầu hết thời gian (có thể là 95% thời gian) Tôi so sánh các chuỗi với phương thức bằng của lớp Chuỗi Java, như sau:
if (string1.equals(string2))
Chuỗi này bằng phương thức xem xét hai chuỗi Java và nếu chúng chứa cùng một chuỗi ký tự, chúng được coi là bằng nhau.
Xem xét một ví dụ so sánh Chuỗi nhanh với phương thức bằng, nếu thử nghiệm sau được chạy, hai chuỗi sẽ không được coi là bằng nhau vì các ký tự không giống hệt nhau (trường hợp của các ký tự là khác nhau):
String string1 = "foo";
String string2 = "FOO";
if (string1.equals(string2))
{
// this line will not print because the
// java string equals method returns false:
System.out.println("The two strings are the same.")
}
Nhưng, khi hai chuỗi chứa cùng một chuỗi ký tự, phương thức equals sẽ trả về true, như trong ví dụ này:
String string1 = "foo";
String string2 = "foo";
// test for equality with the java string equals method
if (string1.equals(string2))
{
// this line WILL print
System.out.println("The two strings are the same.")
}
Tùy chọn 2: So sánh chuỗi với phương thức equalsIgnoreCase
Trong một số bài kiểm tra so sánh chuỗi, bạn sẽ muốn bỏ qua xem các chuỗi là chữ hoa hay chữ thường. Khi bạn muốn kiểm tra các chuỗi của mình xem có bằng nhau theo cách không phân biệt chữ hoa chữ thường này không, hãy sử dụng phương thức equalsIgnoreCase của lớp String, như sau:
String string1 = "foo";
String string2 = "FOO";
// java string compare while ignoring case
if (string1.equalsIgnoreCase(string2))
{
// this line WILL print
System.out.println("Ignoring case, the two strings are the same.")
}
Tùy chọn 3: So sánh chuỗi Java với phương thức so sánh
Ngoài ra còn có một cách thứ ba, ít phổ biến hơn để so sánh các chuỗi Java và đó là phương thức so sánh với lớp String. Nếu hai chuỗi hoàn toàn giống nhau, phương thức so sánh sẽ trả về giá trị 0 (không). Dưới đây là một ví dụ nhanh về cách tiếp cận so sánh Chuỗi này trông như thế nào:
String string1 = "foo bar";
String string2 = "foo bar";
// java string compare example
if (string1.compareTo(string2) == 0)
{
// this line WILL print
System.out.println("The two strings are the same.")
}
Trong khi tôi viết về khái niệm bình đẳng này trong Java, điều quan trọng cần lưu ý là ngôn ngữ Java bao gồm một phương thức bằng trong lớp Đối tượng Java cơ sở. Bất cứ khi nào bạn đang tạo các đối tượng của riêng mình và bạn muốn cung cấp một phương tiện để xem hai trường hợp của đối tượng của bạn có "bằng nhau" hay không, bạn nên ghi đè (và thực hiện) phương thức này bằng trong lớp của bạn (giống như cách ngôn ngữ Java cung cấp hành vi bình đẳng / so sánh này trong phương thức String bằng).
Bạn có thể muốn xem cái này ==, .equals (), soTo () và so sánh ()