본문 바로가기
CLASS/JAVA

#20-1 / 람다(lamda)코드 사용 방식

by hingu 2024. 6. 11.

단점 : 버전 별로 달라질 수 있다

java11번 기준 수업   =>  ∴ 8번대에서는 안먹힐 수 있다

 

✅ lamda 방식 ( =삼항연산)

java8번대부터 시작 / java11에서 가장 활발

사용이유 : method를 단순화(익명)하는 작업

javascript는 ES5부터 해당 방식 도입

 

✅ lamda방식의 형태 - 2가지 방식

  1. 화살표 방식 : ->
  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 ?: 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