백엔드/Java

Long 동일성 == 비교

infitry 2022. 8. 18. 07:21
반응형

Java에서는 값을 비교 할 때 동일성 (==), 동등성 (equals)로 비교합니다.

이중에서 Long을 동일성(==) 비교했을 때 어떤 일이 발생하는지 알아보겠습니다~

Long을 동일성 비교하게되면, 특정 상수풀(-128 ~ 127) 까지는 정상적으로 동작을합니다.

이래서 아무생각없이 함정에 빠졌습니다.

 

그림1. ReferenceType에 동일성 비교

127 이상으로 넘어가니 동일성으로 비교가 되지않는 것을 확인했습니다.

 

그림2. 결과

결론은 객체 비교는 항상 equals를 사용하자 입니다.

반응형