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