프로그램을 작성하다보면 두 객체가 같은지 비교하는경우가 많다
기본 타입의 값을 비교하기 위해선 == 연산자를 사용하지만, 객체 비교를 위해 ==연산자를 사용하면 잘못된 결과가 나올 수 있다.
▶객체 비교를 위해선 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가 된다
▶==연산자는 두 객체의 내용물이 같은지를 비교하는 것이 아니라, 두 레퍼런스의 값을 비교한다
'의문점 공부하기 > 📌 Java' 카테고리의 다른 글
📌 자바에서 문자열을 조작하는 클래스는 무엇이 있을까? 각 클래스의 차이점은? (0) | 2023.06.07 |
---|---|
📌 자바에서 Math.round(-1.5)는 무엇을 의미할까? (0) | 2023.06.05 |
📌 Java에서 final의 기능은 무엇인가? (0) | 2023.06.02 |
📌 두 객체가 동일한 hashCode를 가지면 Equals()가 참이어야 한다?! (0) | 2023.06.01 |
📌 JDK와 JRE의 차이점은 뭘까? (0) | 2023.05.30 |