카테고리 없음

equals와 == 차이점, 동등성 vs 동일성

기주그지마 2023. 2. 21. 19:21

 

 

equals 메소드는 비교하고자하는 대상의 내용 자체(값 자체)를 비교하지만,

 

 

== 연산자는 비교하고자하는 대상의 주소값을 비교한다.

 

 

String a = "aaa";

 

String b = a;

 

String c = new String("aaa");

 

 

(a와 b는 같은 주소값,   a와 c는 다른 주소값이지만, 같은내용)

 

 

 

 

 

 

 

실행문장)

 

 

System.out.println(a.equals(b));

 

System.out.println(a == b);

 

System.out.println(a == c);

 

System.out.println(a.equals(c));

 

 

 

 

 

 

실행 결과)

 

 

true

 

true

 

false

 

true

 

 

 

+ b.equals(c) 는 true

 

 

b == c는 false 이다.

 

 

 

 

 

 

 

 

 

 

 

 

 

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

 

 

 

동등성 vs 동일성

 

 

예시)

 

2개의 같은 모델의 핸드폰이 있다고 쳐보자.

 

2개의 핸드폰은 동등하다고 볼 수는 있지만, 동일하다고 볼 수는 없다.

 

 

 

 

같은 맥락으로 두 개의 객체가 있고,  두 객체가 주소값이 같다면 동일성을 가지는 것이고,

 

두 객체가 값만 같다면 동등성을 가지는 것이다

 

 

 

 

 

동일성 비교는 ==을 통해 주소값이 같은지 비교하는 것이다

 

동등성 비교는 equals(), hashcode()를 통해 논리적 지위가 같은지 비교하는 것이다