👉 클래스에 대한 필수적인 데이터를 지정하기 위한 함수

👉기본적으로 클래스에 대한 생성자를 직접 생성할 수 있지만, 따로 생성해주지 않으면 컴파일러에서 자동으로 defualt 생성자를 생성해준다.

👉Movie클래스에서 Movie라는 똑같은 메서드를 생성하는 것이 생성자이다. 이렇게 매개변수를 넣은 생성자를 만들어 놓게 되면 main 메서드에서는 Movie m1 = new Movie("해리포터", 12, 4, "A");처럼 매개변수를 넣은 인스턴스를 만들어줘야 한다.

👉 Movie클래스에서 위와 같은 생성자를 만들지 않으면 이 처럼 자바에서 자동으로 기본생성자를 만들어준다. 이럴 경우 main 메서드에서는 Movie m1 = new Movie();처럼 매개변수를 넣지 않은 인스턴스를 만들어야 한다.
👉 생성자함수는 Menu()와 같은 리모컨을 return 해야 하는데, return값을 만들 수 있는 소스코드 부분이 있으면 return을 해줘야 하는 값이 꼬여버리기 때문에 생성자 함수에서는 return 값을 별도로 지정할 수 없다.
📌함수라는것은 빠져나오는 y값이 동일해야 하는데 다른 java의 메소드 들은 return값이 항상 다르므로 함수가 아닌 메소드 이기 때문에 생성자함수만 함수이다.
LottoBall[] balls = new LottoBall[45];
for (int i = 0; i < balls.length; i++) {
balls[i] = i+1;
}
👉 해당 코드는 오류가 발생한다.
balls 라는 변수는 LottoBall이라는 데이터타입을 가지고있는데 balls[i] = i+1 에서
i+1은 int타입이므로 LottoBall에 맞는 타입을 넣어줘야한다.
LottoBall[] balls = new LottoBall[45];
for (int i = 0; i < balls.length; i++) {
balls[i] = new LottoBall(i+1);
}
SOUT(Arrays.toString(balls));
👉 해당 코드는 오류가 발생하지 않는다.
쉽게 설명하자면 balls의 각 상자안에 LottoBall이라는 리모컨을 넣는것이다.
즉 객체를 넣어줘야 한다.
해당 내용을 출력하게 되면 LottoBall의 각 주소값이 출력된다.
ex) [LottoBall 1, LottoBall 2, ….]
👉 if/else문은 각 if 및 else마다 차곡차곡 비교를 하면서 내려가고,
switch문은 bytecode에서도 case를 분리하여 선택되기 때문에 if/else문 보다 빠르다.