AskMePlz / EffectiveJava

이펙티브자바를 공부합니다.
4 stars 4 forks source link

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

Closed JamieShin0201 closed 2 years ago

dev-jaekkim commented 2 years ago
  1. p.31 String s = new String("bikini"); //따라하지 말 것! 이 문장은 실행될 때마다 String 인스턴스를 새로 만든다.

s라는 인스턴스를 생성하고, 그 다음에 bikini 매개변수를 가진 String 객체를 생성한 다음에 s가 해당 객체를 참조할 수 있도록 주소 값을 넣어 주기 때문에 인스턴스를 새로 만든다고 표현하는 것일까요?

dev-jaekkim commented 2 years ago
  1. p32 Pattern은 입력받은 정규표현식에 해당하는 유한 상태 머신 (finite state machine)을 만들기 때문에 인스턴스 생성 비용이 높다.

여기서 말하는 유한 상태 머신이란 무엇일까요? 그리고 Pattern 말고 다른 예도 있을까요?

peacebestill0314 commented 2 years ago

String을 new("text")로 생성하거나 Boolean.valueOf(true) 로 선언하는 케이스는 많이 없을것 같고 실제로 6-1을 6-2로 개선한것 처럼 의미 없이 계속 생성되는 객체를 리팩토링한 케이스 다들 생각 나시는거 있나여!?

JamieShin0201 commented 2 years ago
  1. p.31 String s = new String("bikini"); //따라하지 말 것! 이 문장은 실행될 때마다 String 인스턴스를 새로 만든다.

s라는 인스턴스를 생성하고, 그 다음에 bikini 매개변수를 가진 String 객체를 생성한 다음에 s가 해당 객체를 참조할 수 있도록 주소 값을 넣어 주기 때문에 인스턴스를 새로 만든다고 표현하는 것일까요?

new String() 으로 String 객체를 생성하면 내용이 같더라도 매번 새로운 객체가 생성됩니다. "" 을 이용해 객체를 생성하면 내용이 같을 때 이미 만들어진 객체를 참조하게 됩니다.

참고: https://ict-nroo.tistory.com/18

JamieShin0201 commented 2 years ago
  1. p32 Pattern은 입력받은 정규표현식에 해당하는 유한 상태 머신 (finite state machine)을 만들기 때문에 인스턴스 생성 비용이 높다.

여기서 말하는 유한 상태 머신이란 무엇일까요? 그리고 Pattern 말고 다른 예도 있을까요?

유한 상태 기계(finite-state machine, FSM) 또는 유한 오토마톤(finite automaton, FA; 복수형: 유한 오토마타 finite automata)는 컴퓨터 프로그램과 전자 논리 회로를 설계하는 데에 쓰이는 수학적 모델이다. 간단히 '상태 기계'라고 부르기도 한다.

정규표현식을 유한 상태 기계로 만들고, 이러한 수학적인 모델을 이용해 문자열을 검색, 치환을 할 수 있습니다.

참고: https://ko.wikipedia.org/wiki/%EC%9C%A0%ED%95%9C_%EC%83%81%ED%83%9C_%EA%B8%B0%EA%B3%84

JamieShin0201 commented 2 years ago

String을 new("text")로 생성하거나 Boolean.valueOf(true) 로 선언하는 케이스는 많이 없을것 같고 실제로 6-1을 6-2로 개선한것 처럼 의미 없이 계속 생성되는 객체를 리팩토링한 케이스 다들 생각 나시는거 있나여!?

저는 책의 예시처럼 정규표현식을 담은 Pattern을 이른 초기화 하여 이용한 적이 있습니다.