시작이 반

[Java] 람다식(Lambda) 본문

Programming/Java

[Java] 람다식(Lambda)

G_Gi 2021. 1. 20. 02:58
SMALL

람다 표현식(Lambda expression)?

메소드를 하나의 식으로 표현한것, 익명 함수를 지칭하는 용어

 

  • 람다 대수는 이름을 가질 필요가 없다. - 익명 함수
  • 2개 이상의 입력이 있는 함수는 최종적으로 1개의 입력만 받는 람다 대수로 단순화 될 수 있다. - 커링

작성

문법
(매개변수 목록) -> {함수 몸체}

유의사항

  1. 매개변수의 타입을 추론할 수 있는 경우에는 타입을 생략할 수 있다.
  2. 매개변수가 하나인 경우에는 괄호()를 생략할 수 있다.
  3. 함수의 몸체가 하나의 명령문만으로 이루어진 경우에는 중괄호{} 를 생략할 수 있다.                                      (이때 세미콜론;은 붙이지 않는다.)
  4. 함수의 몸체가 하나의 return문으로만 이루어진 경우에는 중괄호{}를 생략할 수 없다.
  5. return문 대신 표현식을 사용할 수 있으며, 이때 반환값은 표현식의 결과값이 된다.                                          (이때 세미콜론;은 붙이지 않는다.)
(매개변수) -> {함수몸체}

매개변수 -> {함수몸체) //매개변수가 하나일경우 () 생략

(매개변수) -> 함수몸체 //함수의 몸체가 하나의 명령문만으로 이루어진 경우에는 중괄호{} 를 생략할 수 있다. 

(매개변수) -> {return 0;} //함수의 몸체가 하나의 return문으로만 이루어진 경우에는 중괄호{}를 생략할 수 없다.

() -> 함수 몸체 //매개변수가 없을경우

 

int max(int a, int b) {
	return a > b ? a : b;
}

(int a, int b) -> {
	return a > b ? a : b;
}

return문 대신 표현식을 사용 (이떄 세미코론; 은 붙이지 않는다.)

(int a, int b) -> a > b ? a : b

매개변수의 타입을 추론할 수 있는 경우에는 타입을 생략할 수 있다.

(a, b) -> a > b ? a : b

 

 

스레드 예시

        new Thread(new Runnable() {
            public void run() {
                System.out.println("전통적인 방식의 일회용 스레드 생성");
            }
        }).start();

        new Thread(()->{
            System.out.println("람다 표현식을 사용한 일회용 스레드 생성");
        }).start();
LIST

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

[Java] 코테 준비 ( 알아야할 것들)  (2) 2021.08.13
[Java] SOLID  (1) 2021.05.10
[Java] Lombok  (0) 2021.01.25
[Java] Stream  (0) 2021.01.20
[Java] Optional  (0) 2021.01.20