BACKEND/SpringBoot
Java :: equals() 와 == 의 차이
neeon
2024. 1. 9. 15:43
728x90
.equals()와 == 모두 비교 연산자이며
둘 다 모두 양쪽에 있는 내용을 비교한 값을 boolean type으로 반환한다.
그런데 java에서 String처럼 Class의 값을 비교할 때에는 보통 equals() 메서드를 사용하는데...
equals와 ==는 구조적으로 어떤 차이점을 갖는지 알아보도록 하자.
1. 형태의 차이
.equals() 는 메소드 이며
== 는 비교를 위한 연산자 이다.
2. 주소 값 비교와 실제 값(내용) 비교
.equals() 메소드는 비교하고자 하는 대상의 내용 자체를 비교하지만,
== 연산자는 비교하고자 하는 대상의 주소 값을 비교한다.
int, float, double, byte 등은 primitive type 으로 Call By Value(CBV) 에 해당.
Class, Object 등은 Call By Reference(CBR) 에 해당. String은 Class에 해당.
* Call By Value(CBV) : 대상에 주소 값을 가지지 않으며, 값을 할당 받는 형태
* Call By Reference(CBR) : 대상을 선언할 때 주소 값이 부여되어, 객체를 불러올 때 주소 값으로 참조가 되는 형태
결론
String을 == 로 비교하게 되면 주소값 비교를 하기 때문에 양 값이 같다고 하더라도 false가 떨어지게 된다.
String은 .equals() 메서드를 이용하여 비교하도록 하자.
728x90