람다식의 도입으로 인해, 이제 자바는 객체지향언어인 동시에 함수형 언어가 되었습니다.
람다란 ?
- 메서드를 하나의 식(expression)으로 표현한 것
메서드를 람다식으로 표현하게 된다면, 이름과 반환값이 사라진다.
→ 익명함수 anonymous function 라고도 불리는 이유
- 람다식은 메서드의 매개변수로 전달되어지는 것이 가능하고, 메서드의 결과로 반환될 수도 있다.
- 즉, 변수처럼 다루는 것이 가능해진 것이다.
메서드와 함수의 차이는 ?
- 나는 메서드와 함수의 차이를 명확하게 알지 못했다.
- 왜냐? → c언어를 학습할 당시 (메서드 == 함수)로 배웠기 때문이다.
- 객체지향개념에서는 함수 대신 객체의 행위나 동작을 의미하는 메서드를 사용한다.
메서드는 함수와 같은 의미이지만, 특정 클래스에 반드시 속해야 한다는 제약이 있다.
다시말해, 기존의 함수와 같은 의미의 다른 용어를 선택해서 사용한 것이다.
But, 이제 다시 람다식을 통해 메서드가 하나의 독립적인 기능을 하기 때문에 함수 라는 용어를 사용한다.
람다식 작성
- 이해하기 쉽게 생각하면, 선언부를 지워주고 ‘→’ 를 해주면 되는 것이다.
- 람다식의 표현은 () → 이기 때문이다.
- 이를 좀더 쉽게 설명하면, 변수를 지워준다고 생각하면 쉽다. 그러나, 매개변수(파라미터)는 있어야한다.
그이후 메서드도 동일하게 있어야함.
반환타입 메서드이름(매개변수 선언){
...
}
||
UUUU
~~반환타입 메서드이름~~(매개변수 선언){
...
}
- return 문 대신 ‘식expression’ 으로 표현할 수 있다. → 식의 연산결과가 자동으로 반환값이 된다.
- 이때, ‘문장’이 아닌 ‘식’이므로 끝에 ‘;’ 를 붙이지 않는다.
(int a, int b) -> { return a > b ? a : b; } **--->** *(int a, int b) -> a > b ? a : b*