[JAVA]자바 문자열 비교 equals(), == 사용법 및 차이점

java 문자열 비교 제대로 알고 사용합시다.

 

안녕하세요 오늘은 문자열 대표적으로 문자열 비교하는

 

equals() 메소드와 비교연산자인 == 에 대해서 알아보겠습니다.

 

1. == 비교를 위한 연산자

주소의 값을 비교합니다.(Call By Reference)
주소의 값이란 실제 내용의 값이 아닌 자료의 위치의 값이라고 생각하면 편하십니다.

 

2. equals() 메소드

equals() 메소드는 객체끼리 내용 비교합니다.(Call By value)

 

예제샘플로 확인해보겠습니다.

package joon;

public class codeTest {

    public static void main(String[] args) throws Exception{

        String str1 = "abc";
        String str2 = str1;
        String str3 = new String("abc");

        // == 연산자는 주소를 비교합니다.
        System.out.println(str1 == str2); // true
        // str2 에 st1 값을 넣었으므로 주소를 같이 공유합니다.

        System.out.println(str1 == str3); // false
        // str1 과 str3는 각각 생성 되었으므로 주소가 다릅니다.

        // equals() 는 내용을 비교합니다.
        System.out.println(str1.equals(str2)); // ture
        System.out.println(str1.equals(str3)); // true
        // 내용을 비교하기떄문에 abc 내용이 같으므로 true 가 반환됩니다.

    }
}

 

1. str1 == str2 

-> true. str2를 st1에 넣었기 떄문에 같은주소를 사용하고 있어서 true 결과가 나왔습니다.

 

2. str1 == str3

-> false. st3은 새로운 new String으로 새로운 주소를 부여해서 주소비교로 인해 false 결과가 나왔습니다.

-> st1과 str3은 다른 객체이기 떄문입니다. 

 

3. str1.equals(str2)

-> true. 내용 비교이므로 abc 내용이 같아서 true 결과가 나왔습니다.

 

4. str1.equals(str3)

-> true. 내용 비교이므로 abc 내용이 같아서 true 결과가 나왔습니다.

 

 

문자열을 비교할때에는 == 보다는 equals를 사용하시는것을 추천드립니다.

 

equals로 null 체크 하는 방법

package joon;

public class codeTest {

    public static void main(String[] args) throws Exception{

        String str1 = "2";
        String str2 = "";

        if(!"".equals(str1)){
            System.out.println("공백이 아닙니다.");
        }

        if("".equals(str2)){
            System.out.println("공백입니다.");
        }


    }

}

댓글

Designed by JB FACTORY