2022.11.14.MON

ronglong·2022년 11월 14일
0

코드스테이츠 Day18

  1. 애너테이션(Annotation)
  • 컴파일러나 프로그램에 정보 전달하는 주석
  • 애너테이션은 java.lang.annotation 인터페이스를 구현/상속. only 단일 상속
    • 표준 애너테이션 : 자바 기본 제공.
      @Override @Deprecated @FunctionalInterface @SuppressWarning 등
    • 메타 애너테이션 : 애너테이션에 붙이는 애너테이션. 애너테이션 정의
      @Target @Documented @Inherited @Retention @Repeatable 등
    • 사용자지정 애너테이션
  1. 람다(Lambda)
  • 코드를 간단하게 쓰는 문법 요소.
  • 함수형 프로그래밍 기법을 지원.
  • 반환타입, 메서드명, return, 중괄호, 세미콜론, 매개변수 타입 등 상황에 따라 생략 가능.
  • 람다식은 익명 클래스(객체 선언과 생성을 동시에 하는 일회용 클래스)의 객체.
  • 객체이므로 람다식은 단독으로 못 쓰이고, 무조건 이에 필요한 인터페이스가 있어야하는데, 바로 함수형 인터페이스(Functional Interface)다.
  • 함수형 인터페이스는 단 하나의 추상 메서드가 있어, 람다식과 일대일 매칭.
  • 함수형 인터페이스명 + 변수명 = () -> {};
  • 람다식 쓸 때마다 추상 메서드가 있는 함수형 인터페이스를 매번 만들 수는 없으므로, 자바에서 기본 제공하는 것 사용.
    https://codechacha.com/ko/java8-functional-interface/
  • 메서드 레퍼런스 : 메서드 간단하게 쓰는 법. 매개변수 생략.
    - 정적 메서드의 경우, 클래스이름::메서드이름
    - 인스턴스 메서드의 경우, 참조변수명 :: 메서드명
    - 생성자 참조, 클래스 :: new
  1. 스트림(Stream)
  • 데이터 요소를 순회하며 연산 메서드를 람다식으로 처리하는 반복자
  • Read-only & 일회용.
  • 데이터의 내부 반복자를 사용하며, 함수 선언을 통해 내부 동작 원리를 숨김.
    • 오리지널 스트림(스트림 생성) : Arrays.asList, Arrays.stream, Stream.of
    • 중간 연산 스트림(여러 번 OK)
    • 최종 연산 스트림(한 번) : 연산 결과가 스트림이 아님.
  1. Optional
  • 모든 타입의 객체를 담을 수 있는 래퍼(Wrapper) 클래스
  • Optional.ofNullable(), Optional.of()로 객체 생성.
  • NullPointerException(NPE) 방지.
  • 연산 결과를 Optional에 담아서 반환하면, NPE가 발생 x
  1. 파일 입출력(I/O)
  • FileInputStream(바이트) -- + 인코딩/유니코드 변환 기능--> FileReader(문자)
  • BufferedInputStream(바이트), BufferedReader(문자) : 성능 향상을 위한 보조 스트림. 한 번에 많은 양의 데이터 입출력을 위한 임시 저장 공간.
  • FileOutputStream(바이트) -- + 인코딩/유니코드 변환 기능--> FileWriter(문자)
  • File 클래스로 파일 및 디렉토리에 접근 가능.

<느낀 점>
오늘 완전히 말하는 감자였다,,
학습 자료랑 줌 미팅 설명 모두 할말하않,,
인터페이스 구현때문에 람다식이 파이썬보다 훨씬 복잡하다. 간단하자고 쓰는 거잖아,, 왜 이래.
내일 문제 풀어보면 조금 감 잡으려나 싶다.

0개의 댓글