독도갈매기의 개발 블로그

[Java] 자바 문자열(String)을 비교하는 방법 본문

Java

[Java] 자바 문자열(String)을 비교하는 방법

독도갈매기 2020. 9. 14. 14:39

문자열 비교 '='이면 되는거 아닌가요?

네 맞습니다. 저희는 아래 코드처럼 비교를 한다면 원하는 결과를 얻을 수 있습니다.

public class Blog {
    public static void main(String[] args) {
        String a = "맞습니다.";
        String b = new String("맞습니다.");

        System.out.println(a == b); // false
    }
}

false
?

위처럼 되는 이유는 자바에 있는 메모리 Heap영역이 존재하고 String이 객체이기 때문입니다.
위 코드에서 일어나는 일을 보면 a에 '맞습니다'를 할당할 때 먼저 Heap영역에 같은 값을 가진 주소값을 탐색합니다.
같은 값을 가진 주소값이 있다면 그 주소값을 할당하는 것이죠 (주소값은 실제 값(맞습니다)을 말하는것이 아닙니다.)

==주소값을 비교하기 때문에 new를 사용한 b는 같은 값이더라도 새로운 공간을 할당받은것입니다.
하지만 그 이유만으로 이 둘은 값을 비교 할 수 없는 것일까요? 아닙니다.
우리가 위에서 쓴 ==은 두 비교 대상의 주소값을 비교하기 때문에 false가 나오지만
equals메소드를 사용하게 된다면 오로지 값만 비교하기 때문에 주소값과 상관없이 true, false를 뱉습니다.

public class Blog {
    public static void main(String[] args) {
        String a = "맞습니다.";
        String b = new String("맞습니다.");

        System.out.println(a.equals(b)); // true
    }
}

true
ddabong
오늘은 여기까지 알아보고 다음에는 더 정재된, 정리된 글로 돌아오겠습니다.

Comments