단점 : 버전 별로 달라질 수 있다
java11번 기준 수업 => ∴ 8번대에서는 안먹힐 수 있다
✅ lamda 방식 ( =삼항연산)
java8번대부터 시작 / java11에서 가장 활발
사용이유 : method를 단순화(익명)하는 작업
javascript는 ES5부터 해당 방식 도입
✅ lamda방식의 형태 - 2가지 방식
- 화살표 방식 : ->
- ?또는 :을 활용하는 방식
⚡ 화살표 method
단점 : 디테일하게 쓰지는 못하는..
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(); } }
'CLASS > JAVA' 카테고리의 다른 글
#20-3 / collector interface, Comparable (0) | 2024.06.11 |
---|---|
#20-2 / generic code 형태의 class (1) | 2024.06.11 |
#19 / Thread (class 형태 , interface 형태) (0) | 2024.05.31 |
#18-2 / Thread를 이용한 멀티 서버 (0) | 2024.05.27 |
#18-1 / 서버 - UDP (0) | 2024.05.27 |