티스토리 뷰
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
댓글