매개변수(parameter, 파라미터) : 함수를 정의 할 때 함수에 사용되는 변수.
int add(int x, int y)할때 int x와 int y가 매개변수
기본형 매개변수: 메서드의 매개변수 타입이 기본형.
변수의 값을 읽기만 할 수 있다.(read only)
메서드 내에서 매개변수 값을 바꿔봐야 지역변수이기 때문에 메서드가 종료되면 원래대로 돌아간다.
클래스이름.메서드이름()
으로 호출. ex) Math.random()참조변수.메서드이름()
으로 호출static 메소드는 인스턴스 변수와 인스턴스 메소드를 호출할 수 없지만,
인스턴스 메소드는 static 변수와 static 메소드를 호출할 수 있다.
(static메소드는 항상 호출가능해야하는데 객체가 있을지 없을지 모르기 때문에.)
: 한 클래스 안에 같은 이름의 메서드를 여러 개 정의 하는 것.
매개변수, 입력하는 값이 다르지만 같은 기능을 수행하는 경우가 많을 때 사용.
: 인스턴스가 생성될 때마다 호출되는 인스턴스 초기화 메서드
. iv를 초기화하는 메서드.
인스턴스 생성시 수행할 작업에 사용. 초기값이 필요한 인스턴스 변수의 값을 초기화해줌.
: 매개변수가 없는 생성자.
생성자가 하나도 선언되어있지 않을 때만, 컴파일러가 자동으로 추가.
클래스이름() {} // 기본생성자
this: 인스턴스 자신을 가리키는 참조변수.
인스턴스 메서드(생성자 포함)에서 사용 가능.
지역(매개)변수와 인스턴스 변수 구별할 때 사용.
this() 생성자에서 다른 생성자를 호출할 때 사용.
다른 생성자 호출시 첫 줄에서만 사용 가능.
초기화 : 변수를 선언하고 '최초로' 값을 할당하는 것.
명시적 초기화 : 변수를 선언과 동시에 초기화하는 것. int a = 1;
초기화 블럭 : 생성자 전에 중괄호{}블럭을 만들어 iv와 cv(블럭앞에 static) 초기화 가능.
항상 생성자보다 먼저 실행. 생성자때문에 잘 쓰지는 않는다. 하지만 생성자가 여러개면 공통 수행코드를 iv 초기화 블록에 포함해 중복을 막을 수 있다.
지역변수는 수동으로 초기화해야 한다.
지역변수가 동작하는 스택메모리는 재사용이 빈번해 매번 초기화하면 성능이 떨어진다.
그래서 그냥 해당 메모리에 있는 값으로 덮어 씌운다
근데 해당 주소에 어떤 값이 있는지 모르기 때문에 java는 개발자에게 수동으로 초기화하라고 요구
c언어에서는 이를 garbage value라 부른다.
멤버변수의 초기화 (기본값으로 자동으로 초기화)
클래스변수 : 클래스가 처음 로딩될 때 단 한번만 초기화
인스턴스변수 : 인스턴스가 생성될 때마다 초기화
초기화 순서(제일 마지막으로 초기화한 값만 남는다)
클래스변수 : 기본값 -> 명시적초기화 -> 클래스 초기화 블럭
인스턴스변수: 기본값 -> 명시적초기화 -> 인스턴스 초기화 블럭 -> 생성자
초기화 방법 =
class Tv11_1 {
boolean power = false; // 기본형 변수의 초기화
int channel = 1; // 기본형 변수의 초기화
Audio audi = new Audio(); // 참조형 변수의 초기화, 참조형은 객체주소 or null 로 초기화!!
// 참조형의 기본값은 null 입니다!!
...
}