언어/Java

[Java]문자열 비교하기 == 와 equals()의 차이점

GAEBAL 2022. 2. 14. 22:56
728x90

문자열 비교하기 == 와 equals()의 차이점

문자열 비교하기 == 와 equals()의 차이점

자바에서 일반적인 데이터 타입의 비교는 `==` 라는 연산자를 사용하여 비교함. 하지만 String 문자열의 값을 비교할 때에는 `equals()` 라는 메서드를 사용하여 비교함.

 

`==` 연산자

public class compare {
    public static void main(String[] args) {
        String s1 = "abcd";
        String s2 = new String("abcd");

        if(s1 == s2) {
            System.out.println("두 개의 값이 같습니다.");
        }else {
            System.out.println("두 개의 값이 같지 않습니다.");
        }
    }
}

 

  • 결과: "두 개의 값이 같지 않습니다."

`==` 연산자의 경우 객체의 주소값을 비교하기 때문에 일반 객체처럼 Heap 영역에 생성된 String 객체와 리터럴을 이용해 string constant pool에 저장된 String 객체의 주소값은 다를 수밖에 없음. 그러므로 두 개의 값은 서로 다르다는 결론이 나오게 됨. 

이러한 경우가 발생할 수 있기에 자바에서 문자열을 비교하려면 equals라는 메서드를 활용하여 두 개의 값을 비교해야 함.

 

`equals()` 메서드

public class compare {
    public static void main(String[] args) {
        String s1 = "abcd";
        String s2 = new String("abcd");

        if(s1.equals(s2)) {
            System.out.println("두 개의 값이 같습니다.");
        }else {
            System.out.println("두 개의 값이 같지 않습니다.");
        }
    }
}

 

  • 결과: "두 개의 값이 같습니다."

String 클래스안에 있는 `equals()`라는 메서드를 사용하면 두 비교 대상의 주소 값이 아닌 데이터값을 비교하기 때문에 어떻게 String을 생성하느냐에 따라 결과가 달라지지 않고 정확한 비교를 할 수 있음.

728x90