public static void main(String[] args) {
Integer i = 100;
Integer i2 = 100;
System.out.println("i == i2 ? " + (i == i2));
}
해당 출력 결과는 당연히 false가 나올 줄 알았다.
왜냐하면 '==' 연산자는 객체의 값을 비교하는 것이 아니라 메모리 주소(참조)를 비교하니깐.
근데 true가 나왔음.
또 신기한 점은
public static void main(String[] args) {
Integer i = 1000;
Integer i2 = 1000;
System.out.println("i == i2 ? " + (i == i2));
}
이렇게 하면 false가 나온 다는 점.
(ㅇㅅㅇ)....??
뭐지...? 싶어서 찾아보니깐
Integer 캐싱 때문이라고 함.
Integer i = 100;
Integer i2 = 100;
System.out.println("i == i2 ? " + (i == i2)); // true 출력
Integer i3 = 128;
Integer i4 = 128;
System.out.println("i3 == i4 ? " + (i3 == i4)); // false 출력
당연한 말이지만 값을 비교하려면 equals() 메서드를 사용하는 것이 더 안전.