wasup

java static memory(정적메모리) 본문

IT/Java

java static memory(정적메모리)

wasupup 2020. 11. 20. 15:24
반응형

-정적 메모리를 사용하려면

멤버 변수나 메서드 앞에 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