public class VariableScopeExam{
int globalScope = 10;
static int staticVal = 7;
//---------------------------------------------------------
public void scopeTest(int value){
int localScope = 20;
System.out.println(globalScope);
System.out.println(localScope);
System.out.println(value);
}
public static void main(String[] args) {
// System.out.println(globalScope); //오류 static 선언 > 오류발생
// System.out.println(localScope); //오류 static 선언 > 오류발생
// System.out.println(value); //오류 static 선언 > 오류발생
// System.out.println(staticVal); //사용가능
//---------------------------------------------------------
VariableScopeExam v1 = new VariableScopeExam();
VariableScopeExam v2 = new VariableScopeExam();
v1.globalScope = 20;
v2.globalScope = 30;
System.out.println(v1.globalScope); //20 이 출력된다.
System.out.println(v2.globalScope); //30이 출력된다.
v1.staticVal = 30;
System.out.println(v1.staticVal); //30 이 출력된다.
v2.staticVal = 50;
System.out.println(v2.staticVal); //50 이 출력된다.
System.out.println(v1.staticVal); //50 이 출력된다.
System.out.println(VariableScopeExam.staticVal);//클래스변수로 사용
//---------------------------------------------------------
}
}
static변수는 값을 저장하는 공간이 1나 밖에 없다. 마지막 사용된 것이 저장되고 공유된다.
static변수 = 클래스 변수
golbalScope같은 변수(필드)는 인스턴스가 생성될때 생성되기때문에 인스턴스 변수라고 한다.
staticVal같은 static한 필드를 클래스 변수라고 한다.
클래스 변수는 레퍼런스.변수명 하고 사용하기 보다는 클래스명.변수명 으로 사용하는것이 더 바람직하다고 하다.
VariableScopeExam.staticVal