Item 59 - 라이브러리를 익히고 사용하라
라이브러리에 미숙할 때 🕶️ 무작위 정수 생성 예제 public class RandomTest { // 흔하지만 문제가 심각한 코드! static Random rnd = new Random(); static int random(int n){ return Math.abs(rnd.nextInt()) % n; ...
라이브러리에 미숙할 때 🕶️ 무작위 정수 생성 예제 public class RandomTest { // 흔하지만 문제가 심각한 코드! static Random rnd = new Random(); static int random(int n){ return Math.abs(rnd.nextInt()) % n; ...
for-each 문을 사용해야 하는 이유 전통적인 for 문의 아쉬운 점 🤔 List<String> fruits = List.of("Apple", "Orange", "Melon", "Lemon", "Banana"); int[] numbers = {1, 2, 3, 4, 5}; // Collection 순회 for (Iterator<...
item 15의 ‘클래스와 멤버의 접근 권한을 최소화하라’와 취지가 비슷하다. 지역변수의 유효 범위를 최소로 줄이면 코드 가독성과 유지보수성이 높아지고 오류 가능성은 낮아진다. 지역변수의 범위를 줄이는 방법 🚀 (1) 가장 처음 쓰일 때 선언하기 사용하는 시점보다 훨씬 이전에 미리 선언하면 가독성이 떨어지고, 실제로 사용하는 시점엔 타입...
자바독 (Javadoc) 이란? API 문서화 유틸리티 자바독은 소스코드 파일에서 문서화 주석(자바독 주석)이라는 특수한 형태로 기술된 설명을 추려 API 문서로 변환해준다. Javadoc 사용법 javadoc 명령어 사용 $ javadoc -d docs {file_name}.java 한글 사용시 UTF-8로 인코딩 필요 $ j...
메서드가 특정 조건에서 값을 반환할 수 없을 때 자바 8 이전 (1) 예외 던지기, (2) null 반환 두 가지 선택지가 존재했다. 하지만 이 방법들에는 모두 단점이 존재한다. 1. 예외를 던지는 방법 진짜 예외적인 상황에서만 사용해야 한다. 예외 생성 시, 스택 추적 전체를 캡처하는 비용이 만만치 않다. 2. null을 반환하...
컬렉션이나 배열이 비었을 때 null을 반환하면? 🐛 private final List<Cheese> cheesesInStock = ...; /** * @return 매장 안의 모든 치즈 목록 반환한다. * 단, 재고가 하나도 없다면 null 을 반환한다. */ public List<Cheese...
가변인수(varargs) 메서드 명시한 타입의 인수를 0개 이상 받을 수 있다. 가변인수 메서드 호출 시, 가장 먼저 인수의 개수와 길이가 같은 배열을 만들고 인수들을 이 배열에 저장하여 가변인수 메서드에 건네준다. 사용법 1 - 필수 인수를 지정하라 잘못 구현한 예시 🐛 static int min(int... args) { ...
다중정의(Overloading)의 경우 public class CollectionClassifier { public static String classify(Set<?> s) { return "집합"; } public static String classify(List<?> lst) { ...
메서드와 생성자 일반적으로 메서드와 생성자 대부분은 입력 매개변수의 값이 특정 조건을 만족하기를 바란다. @Data @AllArgsConstructor public class Order { private String product; // 제품명 private double amount; // 가격 } public void proces...
자바와 동시성 프로그래밍 동시성 프로그래밍 측면에서 자바는 항상 앞서갔다. 스레드, 동기화, wait/notify - 처음 릴리즈부터 지원 동시성 컬렉션(java.util.concurrent), 실행자 프레임워크(Executor) - 자바 5부터 지원 고성능 병렬 분해 프레임워크(parallel decom-position), 포크-조인...