일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- bottom-up
- 최단경로
- onclick
- dto
- kmeans
- 우선순위큐
- disjoint set
- compiler
- Android Studio
- 엔테크서비스
- 직무면접
- 동적계획법
- 벨만 포드 알고리즘
- 유니온 파인드
- 거쳐가는 정점
- top-down
- 플로이드 와샬
- Java
- Django
- union-find
- 코딩테스트
- 음수가 포함된 최단경로
- spring boot
- 다익스트라
- scikit-learn
- Controller
- BufferedReader
- clean code
- 기술면접
- Python
- Today
- Total
목록Developer's_til/Effective Java (10)
춤추는 개발자
똑같은 기능의 객체를 매번생성하기보다는 객체 하나를 재사용하는 편이 나을 때가 많다. 다음 코드 중 첫번째는 절대 하지말아야 할 극단적인 예로 코드가 실행될 때마다 새로운 String 인스터스를 생성한다. 이를 개선한 버전이 두번째 코드다. 새로운 인스턴스를 만드는 대신 하나의 String 인스턴스를 사용한다. 나아가 이 방식을 사용한다면 같은 가상 머신 안에서 이와 똑같은 문자열 리터럴을 사용하는 모든 코드가 같은 객체를 재사용함이 보장된다. String s = new String("str"); String s = "str"; 생성자 대신 정적 팩터리 메서드를 제공하는 불변 클래스에서는 정적 팩터리 메서드를 사용해 불필요한 객체 생성을 피할 수 있다. 아래 첫번째 생성자는 호출할 때마다 새로운 객체를 ..
✅ 싱글턴이란? 인스턴스를 오직 하나만 생성할 수 있는 클래스를 말한다. 전형적인 예로는 함수와 같은 무상태 객체나 설계상 유일해야 하는 시스템 컴포넌트가 있다. ✅ 싱글턴 만드는 방식 [ public static final 필드 방식의 싱글턴 ] public class Elvis { public static final Elvis INSTANCE = new Elvis(); private Elvis() { ... } public void leaveTheBuilding() { ... } } private 생성자는 public static final 필드인 Elvis.INSTANCE를 초기화할 때 딱 한 번만 호출된다. 즉, public이나 protected 생성자가 없으므로 Elvis 클래스가 초기화될 때 ..
클래스의 인스턴스를 얻는 일반적인 방법은 public 생성자다. 하지만, 이와 별도로 클래스는 정적 팩토리 메서드를 제공할 수 있다. 정적 팩토리 메서드란 객체 생성의 역할을 하는 클래스 메서드라는 의미를 갖고 있다. 아래 예시 코드를 참고하자면 java.time 패키지에 포함된 LocalTime 클래스의 정적 팩터리 메서드다. // LocalTime.class public static LocalTime of(int hour, int minute) { ChronoField.HOUR_OF_DAY.checkValidValue((long)hour); if (minute == 0) { return HOURS[hour]; } else { ChronoField.MINUTE_OF_HOUR.checkValidValue..