회사 코드 디버깅하다가 진짜 한참 헤맸는데요, 자기소개하듯이 예제 하나 만들어서 돌려보니까 값이 같은데도 == 결과가 달라지더라고요.


이렇게 하면 true가 나오는데


Integer a = 127, b = 127;
System.out.println(a == b); // true


숫자만 128로 바꿨을 뿐인데 false가 나옵니다.


Integer c = 128, d = 128;
System.out.println(c == d); // false


둘 다 같은 값을 넣었는데 왜 하나는 같다고 하고 하나는 다르다고 하는 걸까요? 무슨 매직넘버라도 있는 건지 도무지 모르겠네요. 혹시 아시는 분 계실까요?