JAVA

[ java ] 클래스 변수, 인스턴스 변수, 지역변수

Adose 2024. 11. 14. 12:33

 

클래스 변수, 인스턴스 변수, 지역변수

public class variableTest {
	
	static int classVariable; //클래스변수 (static변수, 공유변수)
	int instanceVariable; //인스턴스변수

	
	void method() {
	int localVariable; //지역변수
	}
	
}

 

 

인스턴스 변수(instance vairable)

  • 클래스 영역에 사용한다.
  • 클래스 객체(인스턴스)를 생성할 때 만들어진다
  • 생성된 객체(인스턴스)는 독립적인 저장공간을 가진다.
    • 객체 생성 시마다 매번 새로운 변수가 생성된다고 생각하면 된다.

 

 

클래스 변수(class variable)

  • 클래스 영역에 선언되며, static을 붙여서 사용한다.
  • 모든 객체(인스턴스)가 공통된 저장공간을 공유하게 된다.
    • 클래스가 여러 번 생성되어도 Static 변수(=클래스 변수)는 처음 딱 한 번만 생성됨
  • 객체(인스턴스) 생성 없이 사용이 가능하다.

 

 

지역변수(local variable)

  • 메서드 내에 선언되며, 해당 메서드 내에서만 사용이 가능하다.
  • 메서드가 종료되면 소멸된다.
  • for, while문내에 선언된 지역변수는 블럭을 벗어나면 사용이 불가능하다.

 

 

❓ 인스턴스 메서드, 클래스 메서드

  • 인스턴스 메서드는 인스턴스 소속 이기 때문에, 클래스를 통해서 접근이 불가능하다.
class methodTest { 
	
	public static void classMethod(){
	 System.out.println("class method");
	}
	
		public void instanceMethod(){
	 System.out.println("instance method");
	}

}

public class App{

	public static void main(String[] args) {
		methodTest.classMethod();
		methodTest.instanceMethod(); //오류 발생 
	}

}

객체(인스턴스) 생성 없이 호출이 가능하다.