package java_test_t;
//람다코드 사용방식
public class lamda {
static void ex(abc z) { //memory 상주 void method
z.run();
}
static abc test() { //interface를 이용한 return method
abc k = ()->System.out.println("test");
return k;
}
public static void main(String[] args) {
int a = 10;
/* -- 예제 1 */
abc zzz = ()->System.out.println("첫번째 interface 호출");
//only 선언만 구현(실행은 아직 안함)
//abc zzz : abc zzz = new abc(); 이걸 줄인거라고 생각하면 됨
//abc라는 interface이름을 zzz로 객체 생성 후 메소드를 구현
zzz.run(); //실행(사실은 이게 override) - '첫번째 interface 호출' 출력
/* -- 예제 2 */
//interface를 객체화하여 해당 메소드를 호출하여 출력하는 방식
abc ts = test();//only 선언만 구현(실행은 아직 안함)
ts.run();//실행 - 'test' 출력
/* -- 예제 3-1 */
ex(()->System.out.println(a)); //10 출력
/* -- 예제 3-2 */
abc test2 = ()->System.out.println(a);
ex(test2); //10출력
}
}
@FunctionalInterface
interface abc{
public void run();
}
@FunctionalInterface : method 형태의 interface를 선언 / class 안에 interface를 생성 가능
⚡ if 조건문을 lamda로 표현 단점 : 즉시 수식구정도만 사용, 상세한 내용은 사용못함.. 무조건 if,else만 있는 경우(else if는 불가)
return a>b ? a : b;
package java_test_t;
public class lamda2 {
public static void main(String[] args) {
lam_box lb = new lam_box();
int result = lb.check(10, 15);
int result2 = lb.check(15, 10);
System.out.println(result);//15출력
System.out.println(result2);//15출력
int no = 50;
String result3 = no<50 ? "50이하 숫자" : "50이상 숫자";
System.out.println(result3); //50이상 숫자 출력
}
}
class lam_box{
public int check(int a,int b) {
//if조건문을 lamda방식으로 선언
return a>b ? a:b;
}
}
⚡ java시험(6/10) 2번문제 lamda 방식으로 풀이
사용자에게 숫자 입력 받아서 짝수인지 홀수인지 출력하는 문제
public class java2_t {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("숫자를 입력하세요 : ");
int user = sc.nextInt();
String result = (user%2 == 0) ? "짝수" : "홀수";
System.out.println(result);
sc.close();
}
}