클래스 변수
- 인스턴스 변수안에 static을 붙이면 된다
- 클래스 변수의 저장공간을 모든 인스턴스가 공유하게 되기 때문에 인스턴스들이 공통적인 값을 가진다
- 인스턴스를 생성하지 않아도 언제든지 사용할 수 있다.
인스턴스 변수
- 클래스 영역에 선언되고 인스턴스를 생성할 때 만들어진다.
- 인스턴스마다 별도의 저장공간을 가지기 때문에 서로 다른 값을 가질 수 있다.
지역변수
- 메서드 내에 선언되며 메서드 안에서만 사용 가능하다
- 대부분 {}(블럭)을 벗어나면 소멸된다.
class Example{
public static void main(String [] args){
System.out.print(Tv.size); // 출력 : 100 (클래스 변수이기 때문에 바로 출력 가능)
Tv [] tv_arr = { new Tv(), new Tv(); };
tv_arr[0].channel = 5;
tv_arr[1].channel = 10;
System.out.print(tv_arr[0].channel); //출력 : 5 (인스턴스 변수)
System.out.print(tv_arr[1].channel); //출력 : 10 (인스턴스 변수)
Tv.size = 200; //클래스 변수 size 변경
System.out.print(tv_arr[0].size); //출력 : 200 ( 클래스 변수이기 때문에 모두 같은 값)
System.out.print(tv_arr[1].size); //출력 : 200 ( 클래스 변수이기 때문에 모두 같은 값)
}
}
class Tv{
static int size = 100;
int channel = 0;
int volume = 0;
}