2020-06-03 TIL

Facts

  • 소수찾기 문제를 풀었다. 이게 왜 1렙 문제인가? 효율성 테스트를 통과하기 위해서 시간을 오래 소비했다.
  • 객체지향의 사실과 오해책을 6장까지 읽으면서 기봉이형과 우민씨와 같이 스터디했다.

Feelings

  • 너무 어렵다 무슨말인지도 모르겠다. 어디에 쓰는건지도 모르겠고, 도대체 어디에 적용해야할지 감이 안온다.

Findings

  • 에라토스테네스의 체는 수학에서 소루를 찾는 방법이다. 2부터 소수를 구하고자 하는 구간의 모든 수를 나열한다. 2,3,5,7 의 배수들을 차례대로 모두 지우면 원하는 구간의 모든 소수가 남는다.
  • 메서드는 해야할 일을 할 수 없는 상황에 빠질 수도있다. 어쩌면 필요한 리소스가 없거나 부적합한 매개변수를 받아서 그럴지도 모른다. 이런 상황에서는 예외를 던지는 것이 최선이다. 검사 예외를 일으킬 수 있는 메서드는 메서드 헤터의 throws 절에 해당 예외를 선언해야 한다. 예외 잡기는 try블록을 사용한다.
  • Objects 클래스에는 편리한 매개변수 NULL 검사용 메서드가 있다. Objects.requireNonNull()
  • 단정은 일반적으로 사용하는 방어적 프로그래밍 방법이다. assert문은 조건을 평가해서 거짓이면 AssertionError을 던진다. 단정은 기본적으로 비활성화되어 있다. 단정을 활성화하려면 -enableassertions나 -ea 옵션으로 프로그램을 실행해야 한다. java-ea MainClass
  • 자바 프로그래머라면 문제가 있는 코드에 println으로 동작을 들여다보는게 익숙할것이다. 이문제를 해결하고자 로깅 API를 설계했다.
  • 제네릭 클래스는 타입 매개변수가 한 개 이상 있는 클래스다. 제네릭 클래스의 객첼르 생성할 때 생성자의 타입 매개변수를 생략할 수 있다. 이때 생성 인수 앞에 <>를 작성해야 한다. 이 빈 <>를 다이아몬드라고 한다.
  • 제네릭 메서드는 타입 매개변수를 받는 메서드다. 제네릭 메서드는 일반 클래스나 제네릭 클래스에 속할 수 있다. 제네릭 메서드를 선언할 때는 타입 매개변수를 제어자와 반환 타입 사이에 두어야한다. 제네릭 메서드를 호출할 때는 타입 매개변수를 명시하지 않아도 된다. 컴파일러가 메서드 매개변수와 반환 타입에서 타입 매개변수를 추론하기 때문이다.
  • 자바에서는 와일드카드로 메서드의 매개변수의 변환 타입이 변하는 방식을 지정한다. 이 메커니즘을 사용처 가변성이라고도 한다.

Future Action Plan

  • 꾸준히 책을읽어야겠다.