본문 바로가기

나만의 작업/Java

[Effective Java] 5. 불필요한 객체 생성을 피하자

5. 불필요한 객체 생성을 피하자

불변(immutable) 객체는 항상 재사용가능하다.

String s = new String("buri"); 

이렇게 쓰지 말고

String s = "buri"; 

이렇게 쓰자는거

실행될 때마다 새로운 인스턴스를 생성하지 않고 하나의 String 인스턴스를 사용하며 같은 JVM에서 실행되는 어떤 코드에서도 동일한 문자열 리터럴(literal)을 갖도록 재사용될 것이다.

불변 클래스의 불필요한 객체 생성을 막으려면 생성자보다는 static 팩토리 메소드를 사용하는 것이 좋다.
생성자인 Boolean(String)보다는 static 팩토리 메소드인 Boolean.valueOf(String)을 사용하는 것이 더 좋다.
생성자는 호출될 때마다 새 객체를 만드는 반면, static 팩토리 메소드는 결코 그럴 필요가 없고 실제로 그렇게 하지도 않는다.

  • 흠... String s = "abc" 해도
    결국 new String('a', 'b', 'c') 하는 거니까...
    객체 생성 한다는 측면에선 별 차이가 없는...

    문제가 되는 건 new String(antoherString)하는 과정에서 불필요한 메모리 복사가 발생한다는... 정도...^^

    • ^^ 자주 등장하는 String 객체생성.
      말씀해주셨다시피 String s = "abc"도 결국 내부적으론 new String 을 하는거니 성능상의 문제는 비슷하죠.
      불필요한 작업을 피하자는 것~ ^^

  • [NC]...YellOw 2009.09.28 09:17 신고 댓글주소 수정/삭제 댓글쓰기

    호~ 역시 멋지군요. 언제 한번 스타 한판 떠요~