[Java] Wrapper 클래스를 비교 연산자 '=='로 비교하면 안 되는 이유
eelseungmin
배경코드를 작성하던 중 SonarLint가 노란 줄을 표시했다.String이나 Boxed type(Wrapper 클래스)의 경우 equals() 메서드로 비교하라는 조언이다. 비교 연산자의 경우 원시 타입은 값을 비교하지만, 객체는 참조 주소를 비교해서 같은 객체인지 확인한다.String은 equals()를 이용해 비교하고 있음에도 불구하고 Long이나 Integer 같은 숫자형 Wrapper 클래스는 조금 다르게 생각하고 있었던 것 같다. 이유날 혼란스럽게 만든 것은 다음과 같은 예시이다.Long val1 = 127L;Long val2 = 127L;System.out.println(val1 == val2); // trueLong val3 = 128L;Long val4 = 128L;System.out.p..