Growth-Collectors / effective-java

repository for effective java study
3 stars 2 forks source link

아이템 6. 불필요한 객체 생성을 피하라 #6

Open HanaHww2 opened 1 year ago

yeGenieee commented 1 year ago

[Item 6] 불필요한 객체 생성을 피하라

1. String 인스턴스

String s = new String("bikini");
String s = "bikini";

2. 생성자 대신 정적 팩터리 메서드의 사용

3. 값 비싼 객체를 캐싱하여 재사용하기

static boolean isRomanNumeral(String s) {
  return s.matches("^(?=.)M*(C[MD]|D?C{0,3})(X|[CL]|L?X{0,3})(I[XV]|V?I{0,3})$");
}
불변인 Pattern 인스턴스를 클래스 초기화 (정적 초기화) 과정에서 직접 생성해서 캐싱해두자
public class RomanNumerals {
  private static final Pattern ROMAN = Pattern.compile("^(?=.)M*(C[MD]|D?C{0,3})(X|[CL]|L?X{0,3})(I[XV]|V?I{0,3})$");

  static boolean isRomanNumeral(String s) {
    return ROMAN.matcher(s).matches();
  }
}

객체 생성이 비싸니까 하지 말아라 ! <- 이 말이 아니다

HanaHww2 commented 1 year ago

불변객체

jioome commented 1 year ago

불변 객체는 재사용 함으로써 불필요한 객체 생성를 피함을 알 수 있었다.