자바 기초 문법1 (람다, 생성자)

한동훈·2023년 3월 12일
0

자바 문법

목록 보기
1/4

람다

사용이유: 코드를 간결하게 만들 수 있다.

람다식 작성하기

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초기화.(원하는값으로 초기화를 해준다. 원하는 값으로 디폴트 값을 설정해준다.) 편리하게 초기화해주기 위해, 더 직관적이다.

규칙:

  1. 모든 클래스는 하나이상의 생성자를 가져야함, 없으면 컴파일러가 자동으로 기본 생성자를 생성해줌.
  2. 클래스이름과 생성자이름은 같아야 한다.(오버로딩: 같은 이름의 메서드를 여러개 정의, 매개변수는 당연히 달라야 한다.)
  3. 리턴값이 없다.(void 안붙임, 항상 반환값이 없으니깐)
  4. 모든 클래스는 반드시 생성자를 가져야 한다.

생성자 사용:

#생성자 호출 #기본생성자 
#컴파일로 생성자가 하나도 없을 때, 자동으로 추가해준다. 
#매개변수가 없는 생성자
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;
	}
}
profile
돌덩이

0개의 댓글