wasup
java static memory(정적메모리) 본문
반응형
-정적 메모리를 사용하려면
멤버 변수나 메서드 앞에 static을 표기한다.
-유효기간이 가장 긴 메모리다.
-값의 초기화는 한 번만 실행.
-객체명 없이 클래스 이름으로 직접 멤버에 접근 가능.
-static메서드도 객체 생성과 관계없이 사용 가능.
-클레스명.메서드명으로 호출 가능.
-static메서드에서는 static멤버변수와 지역변수만 사용 가능.
-static메서드에서는 일반멤버변수 사용, 호출하는 것이 불가능.
package testPackage;
public class StaticVar {
static int a=1; //정적멤버변수(초기화를 한 번만 하므로 호출될때마다 쌓임)
int b=1; //일반멤버변수(초기화가 매번실행됨)
void staticTest() { //메서드
a++; //후위증가, 한번호출 : 2, 두번호출 : 3
b++; //후위증가, 한번호출 : 2, 두번호출 : 2
System.out.println("static var a = "+a);
System.out.println("non static var b = "+b);
}
}
package testPackage;
public class StaticMain {
public static void main(String[] args) {
StaticVar v1 = new StaticVar(); //v1:객체
System.out.println("v1에서 출력");
v1.staticTest();
StaticVar v2 = new StaticVar(); //v2:객체
System.out.println("v2에서 출력");
v2.staticTest();
StaticVar v3 = new StaticVar(); //v3:객체
System.out.println("v3에서 출력");
v3.staticTest();
v1.a = 50;
v1.b = 500;
System.out.println("v1.a="+v1.a);
System.out.println("v1.b="+v1.b);
System.out.println("v2.a="+v2.a);
System.out.println("v2.b="+v2.b);
System.out.println("v3.a="+v3.a);
System.out.println("v3.b="+v3.b);
System.out.println("StaticVar.a = "+StaticVar.a);
//System.out.println("StaticVar.b = "+StaticVar.b);
}
}
//출력결과
v1에서 출력
static var a = 2
non static var b = 2
v2에서 출력
static var a = 3
non static var b = 2
v3에서 출력
static var a = 4
non static var b = 2
v1.a=50
v1.b=500
v2.a=50
v2.b=2
v3.a=50
v3.b=2
StaticVar.a = 50
반응형
'IT > Java' 카테고리의 다른 글
java Method Overloading(오버로딩) (0) | 2020.11.22 |
---|---|
java static memory(정적메모리)2 (0) | 2020.11.21 |
java 지역변수(블록'안'과 '밖') (0) | 2020.11.19 |
java 재귀 (0) | 2020.11.18 |
java max, sum, avg구하기 (0) | 2020.11.17 |
Comments