เราสามารถเปรียบเทียบสตริงใน Java ได้หลายวิธี:
1. ใช้เมธอด compareTo()
เมธอด compareTo() เปรียบเทียบสตริงสองตัวแบบ lexicographically โดยอิงค่า Unicode ของแต่ละตัวอักษร
import java.util.Scanner;
public class StringComparison {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter string1: ");
String str1 = sc.next();
System.out.println("Enter string2: ");
String str2 = sc.next();
int result = str1.compareTo(str2);
if (result < 0) {
System.out.println("str1 is not equal to str2");
} else if (result == 0) {
System.out.println("str1 is equal to str2");
} else {
System.out.println("str1 is not equal to str2");
}
}
}
2. ใช้ตัวดำเนินการ ==
เปรียบเทียบ reference ของตัวแปร ไใช่ค่า (ไม่แนะนำสำหรับเปรียบเทียบเนื้อหา)
String str1 = "hello";
String str2 = "hello";
if (str1 == str2) { System.out.println("Both are equal"); }
3. ใช้เมธอด equals()
เปรียบเทียบเนื้อหาสตริง รวมถึงตัวพิมพ์ใหญ่/เล็ก
boolean bool = str1.equals(str2); // "Hello".equals("hello") = false
การเปรียบเทียบแบบ Case-Insensitive
เมธอด equalsIgnoreCase() ของคลาส String เปรียบเทียบสตริงโดยไม่สนใจตัวพิมพ์ใหญ่/เล็ก
import java.util.Scanner;
public class StringComparison {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter string1: ");
String str1 = sc.next();
System.out.println("Enter string2: ");
String str2 = sc.next();
boolean bool = str1.equalsIgnoreCase(str2);
if (bool) {
System.out.println("Both are equal");
} else {
System.out.println("Both are not equal");
}
}
}
ผลลัพธ์
Enter string1: Hello
Enter string2: hello
Both are equal
สรุป
| เมธอด | Case-Sensitive | ใช้สำหรับ |
|---|---|---|
| equals() | ใช่ | เปรียบเทียบค่าที่ต้องตรงทุกตัวอักษร |
| equalsIgnoreCase() | ไม่ | เปรียบเทียบค่าไม่สนใจพิมพ์ใหญ่/เล็ก |
| compareTo() | ใช่ | เรียงลำดับหรือเปรียบเทียบมาก/น้อย |
| == | - | เปรียบเทียบ reference (ไม่แนะนำ) |