[Java] static 메소드 안에서의 인스턴스 변수 사용 방법

Hee·2024년 3월 27일

Java 복습

목록 보기
17/46
post-thumbnail

static 메소드 안에서의 인스턴스 변수 사용

  • 인스턴스 변수는 static 메소드 안에서 같은 클래스 내에 있음에도 사용할 수 없다.
public class VariableScopeExam{
	int globalScope = 10;		

	public static void main(String[] args){
		System.out.println(globalScope); 	// 오류발생!
	}
}
  • 클래스 속성으로 선언된 변수 globalScope의 사용 범위는 클래스 전체이다.
  • 하지만, main 메소드는 static 이라는 키워드로 메소드가 정의되어 있다. 이런 메소드를 static한 메소드라고 한다.
  • static한 메소드에서는 static 하지 않은 필드를 사용할 수 없다.


static 메소드 안에서의 올바른 인스턴스 변수 사용 방법

  1. static한 필드를 사용한다.
public class VariableScopeExam{
	int globalScope = 10;
    static int staticVal = 7;	// static한 필드
    
    public static void main(String[] args){
    	System.out.println(staticVal);		// globalScope와 다르게 사용가능
    }
}

  1. globalScope와 같은 인스턴스 변수를 사용하기 위해서는 클래스 객체를 생성해주어야 한다.
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 = 10;
v2.staticVal = 20;

System.out.println(v1.staticVal);	// 결과: 20
System.out.println(v2.staticVal);	// 결과: 20
  • static하게 선언된 변수는 저장할 수 있는 공간이 하나만 생성된다. 그러므로 static 변수에 다른 값을 넣어도 마지막 하나의 값만 기억한다.
  • globalScope와 같은 변수(필드)는 인스턴스가 생성될 때 생성되기 때문에 인스턴스 변수라고 한다.
  • staticVal와 같은 static한 필드를 클래스 변수라고 한다.
  • 클래스 변수는 '참조변수.변수명' 하고 사용하기보다 '클래스명.변수명'으로 사용하는 것이 더 바람직하다고 한다.
    VariableScopeExam.staticVal	// 클래스명.변수명

0개의 댓글