-
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()를 통해 논리적 지위가 같은지 비교하는 것이다