728x90
반응형
프로그래머스 자바 중급 강의를 학습 목적으로 정리하여 포스팅합니다.
1. 람다식
익명 메소드라고도 한다.
인터페이스 중에서 메소드를 하나만 가지고 있는 인터페이스를 함수형 인터페이스라고 한다.
쓰레드를 만들 때 사용하는 Runnable 인터페이스의 경우 run() 메소드를 하나만 가지고 있다.
Runnable을 이용하여 쓰레드를 만드는 방법
public class LambdaExam1 {
public static void main(String[] args) {
new Thread(new Runnable(){
@Override
public void run(){
for(int i = 0; i < 10; i++){
System.out.println("hello");
}
}
}).start();
}
}
- 쓰레드가 실행되면 쓰레드 생성자 안에 넣은 run() 메소드가 실행된다.
- 자바는 메소드만 매개변수로 전달할 방법이 없고 인스턴스만 전달할 수 있다.
- 그렇기 때문에 run() 메소드를 가지고 있는 Runnable 객체를 만들어서 전달한다.
메소드만 전달할 수 있다면 좀 더 편리하게 프로그래밍할 수 있을 텐데, 자바는 메소드만 전달할 수 있는 방법은 없었기 때문에 매번 객체를 생성해서 매개변수로 전달해야 했다. 이 문제를 해결한 것이 람다표현식이다.
람다식ver
public class LambdaExam1 {
public static void main(String[] args) {
new Thread(()->{
for(int i = 0; i < 10; i++){
System.out.println("hello");
}
}).start();
}
}
- () -> {} 부분이 람다식(익명 메소드) 이다.
- JVM은 Thread 생성자를 보고 () -> {} 이 무엇인지 대상을 추론한다.
- Thread 생성자 api를 보면 Runnable 인터페이스를 받아들이는 것을 알 수 있다.
- JVM은 Thread 생성자가 Runnable 인터페이스를 구현한 것이 와야 하는 것을 알게 되고 람다식을 Runnable을 구현하는 객체로 자동으로 만들어서 매개변수로 넣어준다.
2. 람다식 기본문법
(매개변수 목록) -> {실행문}
Compare 인터페이스
: 2개의 값을 비교하여 어떤 값이 더 큰지 구하는 compareTo() 메소드
2개의 값을 받아들인 후 정수를 반환하는 메소드를 선언
양수면 i가 더 큰 것, 0이면 동일한 값, 음수면 j가 더 큰 것
public interface Compare{
public int compareTo(int value1, int value2);
}
Compare 인터페이스를 이용한 클래스
- Compare 인터페이스를 받아들인 후, 해당 인터페이스를 이용하는 exec 메소드
- compareTo 메소드가 어떻게 구현되어 있느냐에 따라서 출력되는 값이 다르다
public class CompareExam {
public static void exec(Compare compare){
int k = 10;
int m = 20;
int value = compare.compareTo(k, m);
System.out.println(value);
}
public static void main(String[] args) {
exec((i, j)->{
return i - j;
});
}
}
728x90
반응형
'JAVA > [프로그래머스] 자바 강의' 카테고리의 다른 글
[프로그래머스] 자바 중급 강의 part7. 쓰레드 (0) | 2023.02.13 |
---|---|
[프로그래머스] 자바 중급 강의 part6. 어노테이션 (0) | 2023.02.08 |
[프로그래머스] 자바 중급 강의 part5. IO (0) | 2023.02.07 |
[프로그래머스] 자바 중급 강의 part4. 날짜와 시간 (1) | 2023.02.01 |
[프로그래머스] 자바 중급 강의 part3. java.util 패키지 (1) | 2023.02.01 |