Computer >> Máy Tính >  >> Lập trình >> Java

Cách so sánh các chuỗi trong Java

Để so sánh các Chuỗi về sự bằng nhau, bạn nên sử dụng equals của đối tượng Chuỗi hoặc equalsIgnoreCase các phương pháp. Chúng ta cũng sẽ biết lý do tại sao chúng ta không nên sử dụng == toán tử để so sánh các chuỗi.

So sánh các chuỗi với phương thức equals ()

Nếu chúng ta cần so sánh hai chuỗi trong java và cũng quan tâm đến cách viết hoa của các chuỗi, chúng ta có thể sử dụng equals() phương pháp.

Ví dụ:đoạn mã sau sẽ xác định xem hai bản sao của Chuỗi có bằng nhau hay không trên tất cả các ký tự bao gồm cả cách viết hoa:

public class CompareTwoStrings {

    public static void main(String[] args) {
        String firstString = "Test123";
        String secondString = "Test" + 123;
        String thirdString = "TEST123";

        if (firstString.equals(secondString)) {
            System.out.println("first and second strings are equal");
        }

        if (firstString.equals(thirdString)) {
            System.out.println("first and third string are equal");
        }
    }
}

Đầu ra:

    first and second strings are equal
Lưu ý:Câu lệnh in thứ hai không được thực thi vì cách viết hoa của Chuỗi thứ nhất và Chuỗi thứ ba không khớp.

So sánh các chuỗi với Phương thức equalsIgnoreCase ()

Nếu chúng ta cần so sánh hai chuỗi trong java nhưng không quan tâm đến cách viết hoa của các chuỗi, chúng ta có thể sử dụng equalsIgnoreCase() phương pháp.

Ví dụ:trong đoạn mã trên, nếu chúng tôi thay thế .equals() với .equalsIgnoreCase() thì cả hai câu lệnh in đều được thực thi:

public class CompareTwoStrings {

    public static void main(String[] args) {
        String firstString = "Test123";
        String secondString = "Test" + 123;
        String thirdString = "TEST123";

        if (firstString.equalsIgnoreCase(secondString)) {
            System.out.println("first and second strings are equal");
        }

        if (firstString.equalsIgnoreCase(thirdString)) {
            System.out.println("first and third string are equal");
        }
    }
}

Đầu ra:

    first and second strings are equal
    first and third string are equal

Có liên quan:

  • Tại sao lại ghi đè toString () trong Java
  • Cách đảo ngược các chuỗi trong Java
  • Cách trích xuất các số từ một chuỗi
  • Cách chuyển đổi Chuỗi thành Int trong Java

Không sử dụng toán tử ==để so sánh các Chuỗi

Lưu ý:Khi so sánh hai chuỗi trong java, chúng ta không nên sử dụng == hoặc ! = các toán tử.

Các toán tử này thực sự kiểm tra các tham chiếu và vì nhiều đối tượng Chuỗi có thể đại diện cho cùng một Chuỗi, điều này có thể đưa ra câu trả lời sai.

Thay vào đó, hãy sử dụng String.equals(Object) phương thức này sẽ so sánh các đối tượng Chuỗi dựa trên giá trị của chúng.

public class CompareTwoStrings {

    public static void main(String[] args) {
        String firstString = "Test123";
        String secondString = "Test123";
        String thirdString = new String("Test123");

        if (firstString == secondString) {
            System.out.println("first and second strings are equal");
        }

        if (firstString == thirdString) {
            System.out.println("first and third strings are equal");
        }
    }
}

Đầu ra:

    first and second strings are equal
Lưu ý:Câu lệnh in thứ hai không được thực thi.

So sánh chuỗi với giá trị không đổi

Khi so sánh một Chuỗi với một giá trị không đổi, bạn có thể đặt giá trị không đổi ở bên trái của bằng để đảm bảo rằng bạn sẽ không nhận được NullPointerException nếu Chuỗi khác rỗng.

Ví dụ:

"baz".equals(foo)

Trong khi foo.equals("baz") sẽ ném một NullPointerException nếu foo là null, "baz".equals(foo) sẽ đánh giá thành false .

Một giải pháp thay thế dễ đọc hơn là sử dụng Objects.equals() , kiểm tra rỗng trên cả hai tham số:

ví dụ. Objects.equals(foo, "baz") .

So sánh các chuỗi trong một câu lệnh chuyển đổi

Đối với Java 1.7, có thể so sánh một biến Chuỗi với các ký tự trong một câu lệnh switch. Đảm bảo rằng Chuỗi không rỗng, nếu không, nó sẽ luôn ném ra một NullPointerException . Các giá trị được so sánh bằng cách sử dụng String.equals , tức là phân biệt chữ hoa chữ thường.

public class CompareTwoStrings {

    public static void main(String[] args) {
        String stringToSwitch = "A";
        
        switch (stringToSwitch) { 
            case "a":
                System.out.println("a");
                break; 
            
            case "A":
                System.out.println("A"); //the code goes here
                break; 
            
            case "B":
                System.out.println("B");
                break;
            
            default:
                break;
        }
    }
}

Kết luận

Trong bài đăng này, chúng tôi đã giải thích cách so sánh các chuỗi trong java với các ví dụ về mã. Khi cách viết hoa của chuỗi quan trọng, chúng ta nên sử dụng .equals() và khi cách viết hoa không quan trọng, thì chúng ta nên sử dụng .equalsIgnoreCase() .

Hơn nữa, chúng ta không nên sử dụng == toán tử để so sánh các chuỗi, dưới dạng == toán tử kiểm tra tham chiếu chứ không phải giá trị.