1. 화살표 연산자 (->), 람다
2. 삼항 연산자
3. (optional) Java 13. switch 연산자
4. JUnit5
1. 화살표 연산자 (->)와 람다
람다
- 기본 형태 A a = (매개변수) -> {구현 코드};
- 매개 변수가 한 개라면 () 생략 가능하다.
- 구현 코드가 한 줄이면 {} 생략 가능하다.
- 리턴 타입과 파라미터 타입이 존재하지 않는다.
- 함수를 하나의 식으로 표현한 것으로 메소드의 이름이 필요 없기 때문에 익명 함수다.
- 함수를 보다 단순하게 표현하는 방법이다.
- 람다식으로 선언된 변수명은 다른 변수명과 중복될 수 있다.
- 재사용이 불가능하고 디버깅이 어렵다.
- 재귀에는 부적합하다.
- 자바에서는 객체 없이 메소드가 호출될 수 없으므로 익명 내부 클래스로 전환되어 사용된다.
@FunctionalInterface
interface MyFunction {
int calc(int x, int y);
}
public class LambdaEx {
MyFunction f1 = (x, y) -> {return x+y;};
System.out.println("f1의 결과: " + f1.calc(22, 100));
MyFunction f2 = (x, y) -> {return x-y;};
System.out.println("f2의 결과: " + f2.calc(99, 9));
}
}
익명 클래스 Anonymous class?
- 이름이 없는 클래스로 클래스 선언과 객체생성을 동시에 진행한다.
- 특정 클래스가 여러번 호출되지 않는 경우 사용한다.
- 한 번만 사용될 수 있고, 오직 하나의 객체만을 생성할 수 있는 일회용 클래스다.
- 조상의 클래스 이름 또는 구현하고자 하는 인터페이스 이름을 통해 정의한다.
class animal{
}
class dog extend animal{
}
main{
animal ani = new animal();
dog d = new dog();
// 익명 클래스
animal wolf = new animal(){
@Override
}
}
함수형 인터페이스
- @FunctionalInterface
- 구현해야 할 추상 메소드가 하나만 정의된 인터페이스
람다식 종류
- 매개변수가 없고, 리턴 값이 없는 람다식
- 매개변수가 있고, 리턴 값이 없는 람다식
- 매개변수가 없고, 리턴 값이 있는 람다식
- 매개변수가 있고, 리턴 값이 있는 람다식
타입 추론
- 람다식은 리턴 타입과 파라미터 타입이 별도로 존재하지 않는다.
- 컴파일러 스스로 람다식을 보고 추론하여 타입을 유추한다.
2주차의 2~4 내용은 이후 블로그에 존재한다.
https://abbiddo.tistory.com/91
Te JAVA (2) - 삼항 연산자
1. 화살표 연산자 (->), 람다 2. 삼항 연산자 3. (optional) Java 13. switch 연산자 4. JUnit5 2주차의 1 내용은 이전 블로그에 존재한다. https://abbiddo.tistory.com/90 Te JAVA (2) - 람다 (lambda) 1. 화살표 연산자 (->), 람
abbiddo.tistory.com
https://abbiddo.tistory.com/93
Te JAVA (2) - Java 13. switch 연산자
1. 화살표 연산자 (->), 람다 2. 삼항 연산자 3. (optional) Java 13. switch 연산자 4. JUnit5 2주차의 1, 2 내용은 이전 블로그에 존재한다. https://abbiddo.tistory.com/90 Te JAVA (2) - 람다 (lambda) 1. 화살표 연산자 (->),
abbiddo.tistory.com
https://abbiddo.tistory.com/94
Te JAVA (2) - JUnit5
1. 화살표 연산자 (->), 람다 2. 삼항 연산자 3. (optional) Java 13. switch 연산자 4. JUnit5 2주차의 1~3 내용은 이전 블로그에 존재한다. https://abbiddo.tistory.com/90 Te JAVA (2) - 람다 (lambda) 1. 화살표 연산자 (->),
abbiddo.tistory.com
'Programming > JAVA' 카테고리의 다른 글
Te JAVA (2) - JUnit5 (0) | 2023.10.02 |
---|---|
Te JAVA (2) - Java 13. switch 연산자 (0) | 2023.10.01 |
Te JAVA (2) - 삼항 연산자 (0) | 2023.10.01 |
Te JAVA (1) - Primitive Type (0) | 2023.10.01 |
Te JAVA (1) - JVM (0) | 2023.09.26 |