Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 문자열을 비교하는 방법

Strings의 동등성을 비교하려면 String 객체의 equals를 사용해야 합니다. 또는 equalsIgnoreCase 행동 양식. 또한 ==를 사용하지 말아야 하는 이유도 알게 됩니다. 문자열을 비교하는 연산자입니다.

equals() 메소드로 문자열 비교

자바에서 두 문자열을 비교해야 하고 문자열의 대소문자도 신경써야 한다면 equals()를 사용할 수 있습니다. 방법.

예를 들어 다음 스니펫은 대소문자를 포함한 모든 문자에서 String의 두 인스턴스가 동일한지 여부를 결정합니다.

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");
        }
    }
}

출력:

first and second strings are equal
참고:두 번째 print 문은 firstString과 thirdString의 대소문자가 일치하지 않기 때문에 실행되지 않습니다.

equalsIgnoreCase() 메서드를 사용하여 문자열 비교

자바에서 두 문자열을 비교해야 하지만 문자열의 대소문자에 신경 쓰지 않는다면 equalsIgnoreCase()를 사용할 수 있습니다. 방법.

예를 들어 위의 코드 스니펫에서 .equals() .equalsIgnoreCase() 사용 메소드를 사용하면 두 인쇄 문이 모두 실행됩니다.

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");
        }
    }
}

출력:

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

관련:

  • Java에서 toString()을 재정의하는 이유
  • 자바에서 문자열을 뒤집는 방법
  • 문자열에서 숫자를 추출하는 방법
  • Java에서 String을 Int로 변환하는 방법

문자열을 비교하기 위해 ==연산자를 사용하지 마십시오

참고:Java에서 두 문자열을 비교할 때 == 또는 != 운영자.

이 연산자는 실제로 참조를 테스트하며 여러 String 개체가 동일한 String을 나타낼 수 있으므로 오답이 나올 수 있습니다.

대신 String.equals(Object) 이 메서드는 값을 기준으로 String 개체를 비교합니다.

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");
        }
    }
}

출력:

    first and second strings are equal
참고:두 번째 print 문은 실행되지 않습니다.

상수 값이 있는 문자열 비교

String을 상수 값과 비교할 때 상수 값을 equals의 왼쪽에 놓아 NullPointerException이 발생하지 않도록 할 수 있습니다. 다른 문자열이 null인 경우.

예:

"baz".equals(foo)

foo.equals("baz") 동안 NullPointerException이 발생합니다. foo가 null이면 "baz".equals(foo) false로 평가됩니다. .

더 읽기 쉬운 대안은 Objects.equals()를 사용하는 것입니다. , 두 매개변수 모두에 대해 null 검사를 수행합니다.

예를 들어 Objects.equals(foo, "baz") .

Switch 문에서 문자열 비교

Java 1.7부터 switch 문에서 String 변수를 리터럴과 비교할 수 있습니다. 문자열이 null이 아닌지 확인하십시오. 그렇지 않으면 항상 NullPointerException이 발생합니다. . 값은 String.equals를 사용하여 비교됩니다. , 즉 대소문자를 구분합니다.

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;
        }
    }
}

결론

이 게시물에서 우리는 코드 예제와 자바의 문자열을 비교하는 방법을 설명했습니다. 문자열의 대소문자가 중요할 때 .equals()를 사용해야 합니다. 대소문자가 중요하지 않은 경우 .equalsIgnoreCase()를 사용해야 합니다. .

또한 ==를 사용해서는 안 됩니다. ==와 같이 문자열을 비교하는 연산자 연산자는 값이 아닌 참조를 확인합니다.