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