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 |
a 와 b 에 값만 비교를 하기에 결과는 true 가 된다. |
b.equals(c) |
true |
b 와 c 에 값만 비교를 하기에 결과는 true 가 된다. |
c.equals(d) |
true |
c 와 d 에 값만 비교를 하기에 결과는 true 가 된다. |
참조
최종 수정 : 2021-08-27