사용이유: 코드를 간결하게 만들 수 있다.
1. 메서드의 이름과 반환타입을 제거하고 '->'를 블록{} 앞에 추가한다.
int max(int a, int b){
return a>b?a:b;
}
람다식 적용
(int a, int b)->{
return a>b?a:b;
}
2. 반환값이 있는 경우, 식이나 값만 적고 return문 생략 가능(끝에 ';'안 붙임)
(int a, int b)->{
return a>b?a:b
}
람다식 적용
(int a, int b)-> a>b?a:b
3. 매개변수의 타입이 추론 가능하면 생략가능(대부분의 경우 생략가능)
(int a, itn b)-> a>b?a:b
인스턴스가 생성될 떄마다 호출되는 '인스턴스 초기화 메서드', 인스턴스 초기화란 iv초기화.(원하는값으로 초기화를 해준다. 원하는 값으로 디폴트 값을 설정해준다.) 편리하게 초기화해주기 위해, 더 직관적이다.
#생성자 호출 #기본생성자
#컴파일로 생성자가 하나도 없을 때, 자동으로 추가해준다.
#매개변수가 없는 생성자
Time t = new Time();
t.hour = 12;
t.minute = 34;
t.second = 56;
생성자 호출
Time t = new Time(12,34,56);
#ex
class Data_1{
int value;
}
class Data_2{
it value;
Data_2(int x){
value = x;
}
}
class Ex6_11{
public static void main(String[] args){
Data_1 d1 = new Data_1();
Data_2 d2 = new Data_2();
}
}
컴파일결과:
result: Ex6_11.java:15: cannot resolve symbol
symbol : constructor Data_2()
location: class Data_2()
Data_2 d2 = new Data_2();
중요!컴파일러가 Data2를 이해못함, _Data_2에는 매개변수가 포함된 생성자가 만들어져 있기 떄문에. 컴파일러가 자동으로 기본 생성자를 생성하지 않는다. 그렇기 떄문에, 기본 생성자가 없다는 컴파일 에러가 발생함.
# 기본생성자를 직접 작성해주면 해결 된다.
class Data_2{
it value;
Data_2(){ # 여기!
};
Data_2(int x){
value = x;
}
}