땅지원
땅지원's Personal blog
땅지원
전체 방문자
오늘
어제
  • 전체 (353)
    • Frontend (2)
      • React (2)
    • Backend (90)
      • Java (16)
      • Python (19)
      • Spring (23)
      • Database (21)
      • Troubleshooting (8)
    • DevOps (27)
      • ELK (13)
    • CS (40)
    • OS (2)
      • Linux (2)
    • Algorithm (95)
      • concept (18)
      • Algorithm Problem (77)
    • 인공지능 (25)
      • 인공지능 (12)
      • 연구노트 (13)
    • 수업정리 (35)
      • 임베디드 시스템 (10)
      • 데이터통신 (17)
      • Linux (8)
    • 한국정보통신학회 (5)
      • 학술대회 (4)
      • 논문지 (1)
    • 수상기록 (8)
      • 수상기록 (6)
      • 특허 (2)
    • 삼성 청년 SW 아카데미 (6)
    • 42seoul (12)
    • Toy project (3)
    • 땅's 낙서장 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 20.11.6 BB21플러스 온라인 학술대회
  • 20.10.30 한국정보통신학회 온라인 학술대회

인기 글

태그

  • D
  • 이것이 리눅스다 with Rocky Linux9
  • I
  • E
  • ㅗ

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
땅지원

땅지원's Personal blog

Backend/Java

Java8

2022. 8. 5. 09:12

1. 람다 표현식(lambda expresssion) : 함수형 프로그래밍(익명함수)

Q. 함수랑 메소드랑 다른가?

함수 : 특정 작업을 수행하는 독립적인 존재(알고리즘 할 때 따로 구현하는 function() 생각하면 될 듯)

메소드(클래스함수) : 클래스, 구조체, 열거형에 포함되어 있는 함수, 해당 클래스에 대한 객체가 생성되어 사용 가능

 

 

★ 자바에서는 클래스의 선언과 동시에 객체를 생성하므로, 단 하나의 객체만을 생성할 수 있는 클래스를 익명 클래스라 함

따라서 자바에서 람다 표현식은 익명 클래스와 같다고 할 수 있다

new Object() {
    int min(int x, int y) {
        return x < y ? x : y;
    }
}

(x,y) -> x<y ? x : y //람다 표현식

함수형 인터페이스(functional interface)

람다 표현식을 하나의 변수에 대입할 때 사용하는 참조 변수의 타입

함수형 인터페이스는 추상 클래스와는 달리 단 하나의 추상 메소드만을 가져야 한다

@FunctionalInterface

위와 같은 어노테이션을 인터페이스의 선언 앞에 붙이면, 컴파일러는 해당 인터페이스를 함수형 인터페이스로 인식한다

자바 컴파일러는 이렇게 명시된 함수형 인터페이스에 두 개 이상의 메소드가 선언되면 오류를 발생시킨다

@FunctionalInterface
interface Calc { // 함수형 인터페이스의 선언
    public int min(int x, int y);
}

public class Lambda02 {

public static void main(String[] args){
        Calc minNum = (x, y) -> x < y ? x : y; // 추상 메소드의 구현
        System.out.println(minNum.min(3, 4));  // 함수형 인터페이스의 사용
    }
}

 

 

 

2. 스트림 API(stream API) : 데이터의 추상화 (iteraotr로 검색해서 사용하는 코드 재사용성 증가)

 

3. java.time 패키지 : Joda-Time을 이용한 새로운 날짜와 시간 API(Calander 개선)

 

4. 나즈혼(Nashorn) : 자바스크립트의 새로운 엔진(자바스크립트의 기본 엔진으로는 모질라의 리노(Rhino) 사용성능과 메모리 관리 면에서 크게 개선된 스크립트 엔진 Nashorn 변경)

 

5. 인터페이스에 default로 구현된 메소드를 사용할 수 있다

 

 

'Backend > Java' 카테고리의 다른 글

Servlet Programming  (0) 2022.09.16
JDBC 프로그래밍  (0) 2022.09.14
Java 순열과 조합  (0) 2022.08.04
Java 코딩테스트를 위한 문법  (0) 2022.08.02
Java 직렬화  (0) 2022.07.27
    'Backend/Java' 카테고리의 다른 글
    • Servlet Programming
    • JDBC 프로그래밍
    • Java 순열과 조합
    • Java 코딩테스트를 위한 문법
    땅지원
    땅지원
    신입 개발자의 우당탕탕 기술 블로그

    티스토리툴바