더북(TheBook)

2.13 동등성과 동일성

자바에서 빠지기 쉬운 함정의 하나는 동등성(equality)과 동일성(identity)을 혼동하는 것이다. 자바 원시 타입이나 문자열 인터닝(interning), Integer를 자바에서 처리하는 방식 때문에 이런 문제가 더 복잡해진다.

int a = 2;
System.out.println(a == 2); // true
Integer b = Integer.valueOf(1);
System.out.println(b == Integer.valueOf(1)); // true
System.out.println(b == new Integer(1)); // false
System.out.println(b.equals(new Integer(1))); // true
Integer c = Integer.valueOf(512);
System.out.println(c == Integer.valueOf(512)); // false
System.out.println(c.equals(Integer.valueOf(512))); // true
String s = "Hello";
System.out.println(s == "Hello"); // true
String s2 = "Hello, World!".substring(0, 5);
System.out.println(s2 == "Hello"); // false
System.out.println(s2.equals("Hello")); // true
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.