본문 바로가기

JAVA/객체 코드

static

  static == 정적 -> 유지상태
  -> 남발하면 메모리의 낭비로 주의해서 사용
  -> 주로 프로그램의 흐름을 파악 할 때 사용

 


 

 

1. static 메소드

 

주 사용처:

위와 같은 코드->Member 클래스의 static메서드 안에 객체생성고 초기화까지 해서 절차를 줄임

 

//접근 못하는 요소
메소드 안에 this, super 접근 못함

메인----	
    MyClass.staticMethod();//instance를 생성하지 않아도 바로 사용 가능
		//->MyClass staticMethod() 호출
		
		Member mem = new Member();
		mem.init();
		mem.random();
		mem.input();
		
		
		//위와 같은 코드->Member 클래스의 static메서드 안에 객체생성고 초기화까지 해서 절차를 줄임
		Member m2 = Member.getInstance();
--------------------------------------------

Member 클래스 ----
public static Member getInstance() {//많이사용
		Member m = new Member();
		m.init();
		m.random();
		m.input();
		return m;
	}

 

 


 

 

2. static 변수

메인----------
	int i; //local변수(지역변수)
		{
			int j;//local변수 (지역변수) == auto
			j = 12;
		}
		MyClass cls = new MyClass();
		//cls도 메인 안에 있는 지역변수로서 stack에 올라감
		//MyClass는 heap영역에 올라감
		
		
		int m = cls.getMemNum();
		System.out.println("m="+m); //객체가 생성되는 순간 멤버변수memNum도 생성됨
	
		cls.method();
		cls.method();
		cls.method();
		
		MyClass cls2 = new MyClass();
		
		cls2.method();
        //답: memNum =1
	//   staricVar=4  
        // ->memNum과 같이 초기화 되야하지만 static변수는 저장공간이 1개여서
        //   객체가 아무리 많이생성되어도 고정되어있음
        
---------------------------------------
MyClass 클래스-------------




public class MyClass {
	private int memNum;//멤버변수
	//
	static int staticVar;//static변수
	//고정변수, 메모리 영역이 1개,객체가 아무리 많이 생성되어도 동일한 영역에서 고정(정적 변수)

	public int getMemNum() {
		return memNum;
	}

	public void setMemNum(int memNum) {
		this.memNum = memNum;
	}
	
	public void method() {//instance method = 일반 method
		int i = 0; //로컬변수-블록문 끝나면 사라짐
		i = i + 1;
		
		memNum = memNum +1; //멤버변수
		System.out.println("memNum ="+memNum);
		
		staticVar = staticVar + 1; //static변수 - 사라지지 않음.
		System.out.println("staricVar="+staticVar);
	

 

 

 

 

 

 

 

'JAVA > 객체 코드' 카테고리의 다른 글

final Class  (0) 2020.06.03
class 기초순서 문제  (0) 2020.06.03
상속(4) instanceOf  (0) 2020.06.03
상속(3) 형변환, 배열// (다형성)  (0) 2020.06.03
상속(2)  (0) 2020.06.03