So sánh 2 ký tự trong java năm 2024

String là một chuỗi các ký tự trong Java, nó là các imutable object nghĩa là chúng ta sẽ không thể thay đổi sau khi khởi tạo. Để so sánh 2 chuỗi trong Java chúng ta có các cách sau

Tự định nghĩa

Đây là phương án hay nếu bạn là người mới bắt đầu học lập trình cũng như ngôn ngữ Java. Cách so sánh được mô tả như sau:

  1. Nếu (string1 > string2) trả về 1.
  2. Nếu cả 2 bằng nhau i.e.(string1 == string2) trả về 0.
  3. Nếu (string1 < string2) trả về -1.
class GFG {
// This method compares two strings
// lexicographically without using
// library functions
public static int stringCompare(String str1, String str2) {
    int l1 = str1.length();
    int l2 = str2.length();
    int lmin = Math.min(l1, l2);
    for (int i = 0; i < lmin; i++) {
        int str1_ch = (int) str1.charAt(i);
        int str2_ch = (int) str2.charAt(i);
        if (str1_ch != str2_ch) {
            return str1_ch - str2_ch;
        }
    }
    if (l1 != l2) {
        return l1 - l2;
    }
    // If none of the above conditions is true,
    // it implies both the strings are equal
    else {
        return 0;
    }
}
// Driver function to test the above program
public static void main(String args[]) {
    String string1 = new String("Deft");
    String string2 = new String("Practice");
    String string3 = new String("Blog");
    String string4 = new String("Blog");
    System.out.println("Comparing " + string1 + " and " + string2
  • " : " + stringCompare(string1, string2));
        System.out.println("Comparing " + string3 + " and " + string4
  • " : " + stringCompare(string3, string4)); System.out.println("Comparing " + string1 + " and " + string4
  • " : " + stringCompare(string1, string4)); } }

Output

Comparing Deft and Practice : -12 Comparing Blog and Blog : 0 Comparing Deft and Blog : 2

Sử dụng String.equals()

Hàm String.equals() được sử dụng để so sánh bằng 2 string với nhau. Nếu nội dung của 2 chuỗi giống nhau thì nó sẽ trả về TRUE ngược lại FALSE.

class GFG {
public static void main(String args[])
{
    String string1 = new String("Deft");
    String string2 = new String("Practice");
    String string3 = new String("Blog");
    String string4 = new String("Blog");
    String string5 = new String("Blog");
    System.out.println("Comparing " + string1 + " and " + string2
  • " : " + string1.equals(string2));
        System.out.println("Comparing " + string3 + " and " + string4
  • " : " + string3.equals(string4)); System.out.println("Comparing " + string4 + " and " + string5
  • " : " + string4.equals(string5)); System.out.println("Comparing " + string1 + " and " + string4
  • " : " + string1.equals(string4)); } }

Output

Comparing Deft and Practice : false Comparing Blog and Blog : true Comparing Blog and Blog : true Comparing Deft and Blog : false

Sử dụng String.equalsIgnoreCase()

Hàm String.equalsIgnoreCase() được sử dụng để so sánh bằng 2 string với nhau, nó khác với String.equalsIgnoreCase() là nó không phân biệt chữ hoa thường.

Nó được sử dụng trong xác thực (bởi phương thức equals()), sắp xếp (theo phương thức compareTo()), so sánh tham chiếu(với toán tử ==), vv

Có ba cách để so sánh chuỗi trong java:

  1. Sử dụng phương thức equals()
  2. Sử dụng toán tử ==
  3. Sử dụng phương thức compareTo()
  1. So sánh chuỗi bằng phương thức equals()

Phương thức equals() được sử dụng để so sánh nội dung của 2 chuỗi. Lớp String cung cấp 2 phương thức equals():

  • public boolean equals(Object another): so sánh 2 chuỗi có phân biệt chữ hoa, chữ thường.
  • public boolean equalsIgnoreCase(String another): so sánh 2 chuỗi không phân biệt chữ hoa, chữ thường.

Ví dụ 1:

public class Teststringcomparison1 { public static void main(String[] args) {

// TODO Auto-generated method stub  
String s1 = "Hello";  
    String s2 = "Hello";  
    String s3 = new String("Hello");  
    String s4 = "Hallo";  
    System.out.println(s1.equals(s2));//true  
    System.out.println(s1.equals(s3));//true  
    System.out.println(s1.equals(s4));//false  
} }

Kết quả:

So sánh 2 ký tự trong java năm 2024

Ví dụ 2:

public class Teststringcomparison2 { public static void main(String[] args) {

// TODO Auto-generated method stub  
String s1 = "Hello";  
    String s2 = "HELLO";  
    System.out.println(s1.equals(s2));//false    
    System.out.println(s1.equalsIgnoreCase(s2));//true    
} }

Kết quả:

So sánh 2 ký tự trong java năm 2024

  1. So sánh chuỗi bằng toán tử ==

Toán tử == được sử dụng để so sánh tham chiếu (không phải giá trị) của 2 chuỗi.

Ví dụ 3:

public class Teststringcomparison3 { public static void main(String[] args) {

// TODO Auto-generated method stub  
String s1 = "Hello";  
    String s2 = "Hello";  
    String s3 = new String("Hello");  
    System.out.println(s1 == s2);//true (vì cả 2 cùng tham chiếu instance giống nhau)    
    System.out.println(s1 == s3);//false(vì s3 tham chiếu instance mà không ở trong Pool)  
} }

Kết quả:

So sánh 2 ký tự trong java năm 2024

  1. So sánh chuỗi bằng phương thức compareTo()

Phương thức compareTo () so sánh các giá trị theo thứ tự từ điển và trả về một giá trị số nguyên mô tả nếu chuỗi đầu tiên nhỏ hơn, bằng hoặc lớn hơn chuỗi thứ hai.