자바8, 람다식(Lambda Expression)이론,실습(자바/JAVA/자바강좌/자바동영상/자바강의/JAVA강의/JAVA동영상/JAVA교육/자바교육/자바학원)
ojc.asia/bbs/board.php?bo_table=LecJava&wr_id=772
ojc.asia

1. 람다식(Lambda Expression)
프로그래밍에서 식별자 없이 함수를 실행할 수 있는 방법을 제공
자바8 이전에는 '메소드'라는 함수 형태가 존재하지만 객체를 통해서만 접근이 가능하고, 메소드 그 자체를 변수로 사용하지는 못한다.
자바8에서는 함수를 변수처럼 사용할 수 있기 때문에, 파라미터로 다른 메소드의 인자로 전달할 수 있고, 리턴값으로 함수를 받을 수도 있다.
이름없는 익명 함수 구현에서 주로 사용한다.
함수형 인터페이스의 인스턴스(구현 객체)를 표현한다.
추상 메소드가 하나인 인터페이스를 함수형 인터페이스 하고 하고 이 구현 객체를 람디식으로 표현한다. 람다식으로 하나뿐인 추상 메소드를 구현하는데, 이를 통해 함수형 인터페이스를 구현하는 것이다.
프로그래밍에서 식별자 없이 함수를 실행할 수 있는 방법을 제공
유형 선언-람다식에서 매개 변수의 유형을 선언 할 필요가 없다. 컴파일러는 매개 변수 값에서 동일하게 추론 할 수 있습니다.
매개 변수 주위의 선택적 괄호-괄호 안에 단일 매개 변수를 선언 할 필요가 없습니다. 매개 변수가 여러 개인 경우 괄호가 필요하다.
선택적 중괄호-본문에 단일 문이 포함 된 경우 식 본문에 중괄호를 사용할 필요가 없다. 문장이 여럿인 경우 중괄호({}) 사용한다.
선택적 반환 키워드-본문에 값을 리턴하는 단일 표현식이 있는 경우 컴파일러는 자동으로 값을 반환한다.(식이 값을 반환 함을 나타내려면 중괄호가 필요함)
람다식 형식
(arg1, arg2...) -> { body }
body에 표현식이 없거나 한개이상 올 수 있다.
(params) -> expression
(params) -> statement
(params) -> { statements }
(int a, int b) -> { return a + b; }
() -> System.out.println("Hello World"); //파라미터없고 Hello World 출력
(String s) -> { System.out.println(s); } //String s입력매개변수로 받아 출력
() -> 8514790 //파라미터없고 8514790가 리턴
() -> { return 3.14 }; //파라미터없고 3.14리턴
2. 실습1
interface Hello {
void sayHello(String name);
// default를 쓰면 인터페이스 내부에서도 코드가 포함된 메소드를 선언 할 수 있다.
default void sayDefaultHello(String name) {
System.out.println("안녕~ " + name);
}
}
public class LambdaTest {
public static void main(String[] args) {
Hello h = (name) -> System.out.println("hello~ " + name);
h.sayHello("이종철");
h.sayDefaultHello("이종철");
}
}
안녕~ 이종철
hello~ 이종철
3. 실습2
package javatest;
import java.util.ArrayList;
import java.util.function.Consumer;
public class LambdaTest2 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("SEOUL");
list.add("BUSAN");
list.forEach( new Consumer<String>() {
public void accept(String s) {
System.out.println(s);
}
});
//Consumer I/F 구현객체를 람다로 구현
list.forEach(s -> System.out.println(s));
list.forEach(System.out::println);
}
}
SEOUL
BUSAN
SEOUL
BUSAN
SEOUL
BUSAN
#자바람다식, #자바Lambda, #람다식, #자바8, #자바8람다, #자바, #JAVA, #자바동영상, #자바강의, #자바교육, #자바강좌, #자바동영상강의, #추천자바강의, #추천자바강좌, #JAVA동영상, #JAVA강의, #JAVA강좌, #JAVA교육, #JAVA, #추천JAVA강의, #추천JAVA교육, #추천JAVA강좌, #자바소스, #자바온라인교육, #자바온라인강의
댓글 없음:
댓글 쓰기