2장 객체 생성과 파괴

객체를 만들어야 할 때와 만들지 말아야 할 때를 구분하는 법, 올바른 객체 생성 방법과 불필요한 생성을 피하는 방법, 제 때 파괴됨을 보장하고 파괴 전에 수행해야 할 정리 작업을 관리하는 요령

item6


불필요한 객체 생성을 피하라

똑같은 기능의 객체를 매번 생성하기보다는 객체 하나를 재사용하는 편이 나을 때가 많다. 특히 불변 객체는 언제든 재사용할 수 있다.

String 재사용 예시

String 은 내부에 String pool 이 존재한다. 그래서 재사용이 가능하다.

// 절대 금물
String str = new String("hello");

// JVM 내에서 재사용 되는 문자열 선언 방식
String str = "hello";

같은 동작을 하는데 매번 새로운 인스턴스를 만들어서 사용하는 방식은 피해야 한다.

래퍼 클래스를 조심하라. 오토박싱 & 오토언박싱은 기본형과 래퍼 클래스와의 경계를 흐리게 만들어서 편리하지만 조심하여야 한다. 아래 코드는 조심하지 않아서 인스턴스를 2^31개나 만들어버렸다.

public static long sum() {
		Long sum = 0L;
		for (long i = 0; i <= Integer.MAX_VALUE; i++) {
				sum += i;
		}
		
		return sum;
}

주의사항

“객체 생성은 비싸니 피해야 한다” 는 의미가 아니다.