배열을 매개변수로 받는 메텍스트소드는 배열의 주소값이 인자로 전달되는 거예요 그래서 만약 메소드에서 배열에 값을 저장한다면 그 배열의 주소를 통해 배열에 직접 값이 저장되는 구조입니다.
함수를 사용하는 이유
- 코드 재사용, 코드 가독성, 유지보수.
println(int x)
println(String x)
println(int x, int y)
println()
매개변수의 개수가 다르거나 타입이 다른 경우 같은 이름으로 정의할 수 있어요. 이를 메소드 오버로딩이라고 합니다. 메소드의 리턴타입만 다른 경우는 불가능해요~
public Practice(){}
public Practice(int x){}
생성자 오버로딩은 Practice 클래스의 기본생성자와 매개변수가 있는 생성자의 이름은 모두 Practice지만 매개변수가 있고 없고의 차이로 동시에 정의가 가능합니다.
프르그램을 모듈로 쪼개면 독립성이 높아져 유지보수가 쉬워져요. 만약 수정할 변수가 생기면 변수가 포함된 모듈 1개만 바꾸면 됩니다. 모듈을 안쓴다면 변수가 들어가있는 모든 코드를 수정해야해요😨
java는 객체지향 프로그래밍이기 때문에 객체로 쪼개 모듈화를 할 수 있답니다
다른 클래스에서 만든 기능을 실체화한 것을 객체(Object)라고 해요. 그럼 클래스란 속성 정보들을 멤버변수(field, property)로 선언하고 기능들을 메소드(method)로 정의해 새롭게 묶어 만든 데이터 타입을 의미합니다.
main 클래스에서 여러가지 다른 클래스들을 가져와 실체화 할 수 있어요! 모듈화의 가장 큰 장점이에요
클래스이름 변수이름 = new 생성자();
클래스의 객체(=인스턴스)를 생성하는 형태입니다.
참조변수이름.메소드( 매개변수 );
클래스가 가지고있는 메소드를 호출하는 형태입니다.
new를 통해 인스턴스를 생성하는 배열, 클래스, 인터페이스 등을 의미해요! 주소를 통해 객체를 참조하는 변수입니다
클래스의 이름과 동일한 생성자는 호출되면서 멤버변수를 기본값으로 초기화시켜줍니다. 정수나 실수같은 숫자타입은 0, boolean은 false, 그 외에는 null이 기본값이에요!
매개변수가 있는 경우와 없는 경우가 있는데 둘 다 존재할 경우 인스턴스 생성 시 선택합니다. 만약 클래스를 작성할 때 생성자를 하나도 정의하지않을 경우 java 컴파일러는 자동으로 기본 생성자를 만들어줍니다 👍👍
Scanner를 사용할 때 import java.util.Scanner;
를 쓴 것처럼 다른 패키지에서 가져온 클래스의 위치를 나타내요. 같은 패키지에 포함된 클래스나 java.lang 패키지(String,..)에 포함된 클래스는 import로 표시안해도 됩니다. String도 클래스라는 사실😮
double radius; //멤버변수
public MyCircle(double radius) { //매개변수가 있는 생성자
this.radius=radius;
}
this는 클래스 자기 자신을 의미해요. 매개변수는 외부에서 받아오는 값인데 매개변수가 있는 메소드에서 매개변수의 이름과 같은 멤버변수는 매개변수로 인식해버립니다. 그 때 클래스의 멤버변수를 구분하기 위해 this.멤버변수
로 표시해요.
NullPointerException 오류
참조변수가 null값을 가진 경우, 객체의 멤버변수나 메소드를 사용하면 발생
Q. 선언과 동시에 초기화 생성자부르면 값은??