Java cung cấp nhiều cách so sánh chuỗi, nhưng chỉ equalsIgnoreCase() mới so sánh nội dung bỏ qua chữ hoa/thường.
Các phương pháp so sánh phổ biến
1. compareTo() – So sánh theo thứ tự từ điển (phân biệt hoa/thường)
String s1 = "Hello";
String s2 = "hello";
int result = s1.compareTo(s2); // != 0 vì 'H' khác 'h'
2. Toán tử == – So sánh tham chiếu (KHÔNG so sánh nội dung)
String a = "hello";
String b = "hello";
System.out.println(a == b); // true do string interning
String c = new String("hello");
System.out.println(a == c); // false - khác đối tượng
3. equals() – So sánh nội dung (phân biệt hoa/thường)
"Hello".equals("hello"); // false
✅ Giải pháp: equalsIgnoreCase()
Phương thức này so sánh hai chuỗi bỏ qua chữ hoa/chữ thường:
import java.util.Scanner;
public class CaseInsensitiveCompare {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Nhập chuỗi 1: ");
String str1 = sc.nextLine();
System.out.print("Nhập chuỗi 2: ");
String str2 = sc.nextLine();
if (str1.equalsIgnoreCase(str2)) {
System.out.println("Hai chuỗi giống nhau (bỏ qua hoa/thường)");
} else {
System.out.println("Hai chuỗi khác nhau");
}
}
}
Kết quả mẫu
Nhập chuỗi 1: Hello
Nhập chuỗi 2: hello
Hai chuỗi giống nhau (bỏ qua hoa/thường)
Lưu ý:equalsIgnoreCase() trả về false nếu đối số là null.