변수의 선언된 위치에 따라 클래스 변수, 인스턴스변수, 지역 변수로 나뉜다.
멤버변수: 객체의 속성
멤버 변수중 static이 붙은 것은 클래스 변수
붙지 않은 것은 인스턴스 변수이다.
나머지는 지역 변수이다.(클래스 영역 이외의 영역) ->메서드, 생성자, 초기화 블럭 내부
인스턴스 변수: 독립적인 저장공간을 가지므로 서로 다른 값을 가질 수 있다.
인스턴스 마다 고유한 상태를 유지해야 하는 속성의 경우 인스턴스 변수로 선언
클래스 변수 인스턴스가 공통된 저장공간을 공유하게 된다.
한 클래스의 모든 인서튼스들이 공통적인 값을 유지해야하는 속성의 경우 클래스 변수로 선언
지역변수는 메서드 내에 선언되어 메서드 내에서만 사용가능하며, 메서드가 종료되면 소멸되어 사용할 수 없게 된다.
package Algorithm;
public class array_test {
public static void main(String[] args) {
Tv[] tv=new Tv[3]; // 길이가 3인 Tv객체 배열
for(int i=0; i<tv.length;i++) {
tv[i]=new Tv();
tv[i].channel= i+10;
}
for(int i=0;i<tv.length;i++) {
System.out.println("tv channel ==>"+tv[i].channel);
System.out.println("tv width ==>"+tv[i].width);
System.out.println("tv height ==>"+tv[i].height);
}
}
}
class Tv{
String color;
boolean power;
int channel;
static int width = 100; //클래스 변수
static int height = 250; //클래스 변수
void power() {power=!power;}
void channelup() { ++channel;}
void channelDown() {--channel;}
}
답 클래스변수는 값을 공유한다 .
tv channel ==>10
tv width ==>100
tv height ==>250
tv channel ==>11
tv width ==>100
tv height ==>250
tv channel ==>12
tv width ==>100
tv height ==>250