티스토리 뷰

JAVA/PRIMER

자바 static 변수

yulrang 2018. 4. 19. 13:59
class R{
	int a = 1;			// 인스턴스 변수
						// 동적 할당 : 힙 영역에 데이터를 저장 -> 런타임시간(실행 중간)에 생김 -> 메소드가 호출되야 생성된다는 것
	
	static int b = 2;	// static 변수
						// 정적 할당 : 데이터영역에 데이터를 저장 -> 컴파일할 시 생김, 프로그램이 종료되면 사라짐
						// 객체 인스턴스를 생성하지 않고도 사용 가능
	
	void method(){
		int c = 3;		// 지역 변수
						// 정적 할당 : 스택 영역에 저장됨	 -> 컴파일할 시 생김, 메소드가 끝나면 사라짐
	}
}
class R2{
	int a = 1;
	static int b = 2;
}
public class static1 {

	public static void main(String[] args) {
		R r = new R();	
		System.out.println(r.a);
		System.out.println(r.b);
		
		//System.out.println(R2.a);	// 사용불가능
		System.out.println(R2.b);	// static이 붙으면 객체 생성 없이 바로 사용가능
	}

}
1
2
2




class S{
	int a = 0;
	static int b = 0;		//
	public S(){
		a++; b++;
		System.out.println(a+", "+b);
	}
}
public class static2 {

	public static void main(String[] args) {
		S s1 = new S();		// 객체마다 a를 다 따로 가지고 있음
		S s2 = new S();		// static변수인 b는 공유됨
		S s3 = new S();
	}
}

//	   힙영역			  데이터 영역
//	|	a	|		|	b	|
//	|	a	|		|		|
//	|	a	|		|		|
1, 1
1, 2
1, 3


'JAVA > PRIMER' 카테고리의 다른 글

자바 클래스배열  (0) 2018.04.19
자바 생성자  (0) 2018.04.19
자바 접근지정자  (0) 2018.04.19
자바 가변길이인수  (0) 2018.04.19
자바 생성자  (0) 2018.04.19
댓글