java38 [Effective Java] 아이템56 공개된 API 요소에는 항상 문서화 주석을 작성하라 ■ 자바독(Javadoc)이란? API 문서화 유틸리티 소스코드 파일에서 문서화 주석이라는 특수한 형태로 기술된 설명을 추려 API 문서로 변환해줌 ■ 공개된 API 요소에는 항상 문서화 주석을 작성하라. 여러분의 API를 올바로 문서화하려면 공개된 모든 클래스, 인터페이스, 메서드, 필드 선언에 문서화 주석을 달아야 한다. 공개된 모든 클래스, 인터페이스, 메서드, 필드 선언에doc comment를 달아야 한다. 공개 클래스는 기본 생성자에 주석을 달 수 있는 방법이 없으니 절대 기본 생성자를 사용해서는 안된다. ■ 메서드용 문서화 주석에는 해당 메서드와 클라이언트 사이의 규약을 명료하게 기술 how가 아닌 what을 기술할 것. (상속용으로 설계된 API가 아닌 이상) 메서드를 성공적으로 호출하기 위.. 2021. 7. 12. [Effective Java] 아이템55 옵셔널 반환은 신중히 하라 ■ 자바 8 이전 자바 8전에는 메서드가 특정 조건에서 값을 반환할 수 없을 때 두가지 선택지가 있었다. 1. Exception Throw 예외는 반드시 예외적인 상황에서만 사용해야 한다. 예외는 실행 스택을 추적 캡처하기 때문에 비용이 비싸다. 2. Null Return null을 리턴하는 경우에는 Null Pointer Exception을 항상 조심해야한다. ■ Optional 도입 자바 8에서 Optional가 도입되면서 선택지가 하나 늘었다. Optionl이란 null이 아닌 T타입 참조를 하나 담거나 아무것도 담지 않은 일종의 래퍼 클래스이다. Optional은 원소를 최대 1개 가질 수 있는 불변 Collection이다. 자바 8이전의 코드보다 null-safe한 로직을 처리할 수 있게 해준다.. 2021. 7. 12. [Java] Garbage Collector 이번 포스팅은 우아한Tech의 던의 JVM의 Garbage Collector 영상 정리 및 다른 블로그들의 내용을 합쳐서 정리한 내용입니다. 1. Garbage Collector란? 동적으로 할당한 메모리 영역 중 사용하지 않는 영역을 탐지하여 해제하는 기능 Stack : 정적으로 할당한 메모리 영역 원시 타입의 데이터가 값과 함께 할당. Heap 영역에 생성된 Object 타입의 데이터 참조 값 할당. Heap : 동적으로 할당한 메모리 영역 모든 Object 타입의 데이터가 할당. Heap 영역의 Object를 가리키는 참조 변수가 Stack에 할당 Stack에 있던 데이터가 pop 되면서 날라가고, heap 영역에 객체 타입의 데이터만 남는데 이런 객체를 Unreachable Object라고 한다... 2021. 1. 17. [Java] Comparable과 Comparator을 이용한 정렬 코딩을 하다보면 컬렉션에 들어있는 객체를 정렬해야 할때가 있다. 이때 객체의 정렬 기준을 "Comparable"이나 "Comparator"를 이용해서 명시해줄 수 있다. 1. Comparable Comparable 인터페이스는 정렬 수행 시 기본적으로 적용되는 정렬 기준이 되는 메소드를 정의하는 인터페이스이다. Java에서 제공되는 정렬이 가능한 클래스들은 모두 Comparable 인터페이스를 구현한다. 정렬 시에 이에 맞게 정렬이 수행된다. // Integer class public final class Integer extends Number implements Comparable { ... } // String class public final class String implements java.i.. 2020. 7. 19. [BAEKJOON] 2004번: 조합 0의 개수 (Java) 1. 문제 nCm의 끝자리 0의 개수를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 정수 n, m(0≤m≤n≤2,000,000,000, n!=0)이 들어온다. 출력 첫째 줄에 0의 개수를 출력한다. 예제 입력 25 12 예제 출력 2 2. 풀이 처음 이 문제를 접근할 때 nCr = n!/(n-r)!r! 공식을 통해서 접근하려고 했다. 하지만 입력 범위가 m,n이 최대 20억인걸 보고 당연히 이 방식은 아닐꺼라고 생각했다. 그리고 끝이 0이 되려면 2x5 쌍이 1개 일 경우 뒤에 0이 한개 생기므로 2와5가 곱해진 개수를 세서 2와5의 지수 중 작은거를 선택하면 되겠다고 접근했다. 여기서 하나 더 생각해야할 것은 2와 5의 지수의 총합을 어떻게 구할지 였다. 100!을 생각해 봤을 때, 5가 곱해진 개.. 2020. 7. 12. [Algorithm] 조합 코드 구현 (Java) 완전탐색 알고리즘에서 모든 경우의 수를 계산한 후 결과 값을 찾는 방식이 자주 나온다. 그래서 재귀를 통해 조합을 구현하는 방법에 대해서 정리하려고 한다. 이때 기본 형식은 아래와 같다. 1. 조합(Combination) 조합은 고등학교 수학에서 경우의 수를 계산할 때 순열과 조합 파트로 배웠었다. 프로그래밍에서도 수학에서의 순열과 조합과 같다고 생각하면 된다. 잠시 고등학교 수학에서 배운걸 생각해보면 아래와 같다. 순서를 고려하지 않고 선택하는 방법 nCr : n개 중 r개를 순서에 상관없이 선택하는 방법의 수 nCr = nPr/r! / (n-r)!r! 간단히 예시를 들면 {1,2,3} 에서 2개를 뽑는 경우의 수 는 3C2로 3X2/2! = 6. 즉, 3가지가 나온다. {1,2} {1,3} {2,3}.. 2020. 7. 12. 이전 1 2 3 4 5 ··· 7 다음