Java 메소드 연산자 ==과 equals()의 차이점

문자열(String) 비교

Java에서는 문자열을 비교할 시에 ==equals()를 사용하게 되는데, 둘은 의미가 다르다.
==는 비교 연산자로써 주소값을 비교하고, equlas() 메서드는 내용 자체를 비교 즉, 데이터 값을 비교하기 때문이다. 그래서 사항에 따라 구분해서 사용해야 한다.

package com.devkuma.basic.string;

public class StringEquals {
    public static void main(String[] args) {
        String a = "devkuma";
        String b = "devkuma";

        String c = new String("devkuma");
        String d = new String("devkuma");

        System.out.println(a == b);  // true
        System.out.println(b == c);  // false
        System.out.println(c == d);  // false

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

실행 결과:

true
false
false
true
true
true

결과 값에 대한 상세 설명은 아래와 같다.

수식 결과 설명
a == b true spring constant pull에 의해서 a 주소값이 b에 그대로 같은 주소값이 할당되어 비교 결과는 ``true`가 된다.
b == c false b에는 주소값이 할당되고, c에는 new 연산자로 새로운 주소값이 할당이 되어 비교 결과는 false가 된다.
c == d false c에는 new 연산자로 새로운 주소값이 할당이 되고, d에도 new 연산자로 새로운 주소값이 할당이 되어 비교 결과는 false가 된다.
a.equals(b) true ab에 값만 비교를 하기에 결과는 true가 된다.
b.equals(c) true bc에 값만 비교를 하기에 결과는 true가 된다.
c.equals(d) true cd에 값만 비교를 하기에 결과는 true가 된다.

참조




최종 수정 : 2021-08-27