로딩
요청 처리 중입니다...

[자바] java Integer.valueOf(127) == Integer.valueOf(127) 는 참일까요?

 [자바] java Integer.valueOf(127) == Integer.valueOf(127) 는 참일까요?

안녕하세요. Java에는 최적화를 위해 객체들을 Cache를 하는 로직이 있습니다.

Cache 로직은 애플리케이션의 성능 향상을 하도록 도와주지만, 의도치 않은 결과를 발생시키기도 합니다. 심지어 크리티컬한 장애 상황의 원인이 되기도 합니다.

Naresh Joshi의 [Java Integer Cache — Why Integer.valueOf(127) == Integer.valueOf(127) Is True] 블로그 글을 옮겨보며, Java Integer Cache에 대해서 살펴보는 시간을 가져봅시다. 인터뷰에서, 내 친구가 다음과 같은 질문을 받았습니다.

Integer a = 127; Integer b = 127; 위와 같은 2개의 Integer 객체가 있습니다. a == b (true? false?)

a == b 의 답은 뭘까요? 본문에서는 이 질문에 대한 답과, 답에 대한 설명을 말하고자 합니다.

답을 간단히 말하자면, int 리터럴을 Integer reference로 직접 대입...