의문점 공부하기/📌 Java
📌 ==와 equals의 차이점은 무엇일까?
아리빠
2023. 5. 31. 10:31
프로그램을 작성하다보면 두 객체가 같은지 비교하는경우가 많다
기본 타입의 값을 비교하기 위해선 == 연산자를 사용하지만, 객체 비교를 위해 ==연산자를 사용하면 잘못된 결과가 나올 수 있다.
▶객체 비교를 위해선 equals() 메소드를 사용해야 한다
==연산자로 두 객체 비교하면 어떤 문제가 발생할까?
public static void main(String[] args) {
Point a = new Point(2,3);
Point b = new Point(2,3);
Point c = a;
if(a==b){ //false
System.out.println("a==b");
}
if(a==c){ //true
System.out.println("a==c");
}
}
}
예시를 통해 알아보자~!
레퍼런스 a와 b가 서로 다른 객체를 가르키므로 당연히 a와 b의 레퍼런스 값은 다르다, a==b의 값은 false
그러나 a와 c는 레퍼런스 값이 같고 동일한 객체를 가르킨다, a==c의 결과는 true가 된다
▶==연산자는 두 객체의 내용물이 같은지를 비교하는 것이 아니라, 두 레퍼런스의 값을 비교한다