클래스 변수, 스태틱 변수라고 하며 전역변수이다
직접대입이 가능하다 Human.population처럼 다이렉트 엑세스이 됩니다.
관계는 없지만 주로 public이 사용됨.
public static int a;
이런식으로 주로 public이 static앞에 붙습니다.
왜냐하면 static변수는 주로 전역으로 사용되기 때문이죠.
클래스 변수
1개 해당 자료형의크기 만큼 자리 잡힙니다.
static변수를 다루는데 있어서 쓰레드 구현시 유의사항이 있습니다
하나의 thread에 의해서만 해당 자원이 다루어져야 한다면.synchronize(해당자원){구현...} 이렇게 하면 다음쓰레드는 해당 코드에 동시에 진입하지 않고 먼저실행된 threa의 {}블럭이 끝날때 까지 기다렸다가 다음쓰레드가 실행되겠습니다.
인스턴스 변수라고 합니다. 전역이 아님
직접대입이 안되고 반드시 Human aMan = new Human() 과 같이 클래스의 인스턴스를 만들어야지만 사용이 가능하다
관계없음
인스턴스변수=속성=멤버변수
그럼 지역변수(로컬변수)는 먼가?
{}[단위블럭]안에서 생명주기를 가지는 변수를 지역변수라고 합니다.
static Method의 {}안에서 선언된 변수변수는 별개의 thread에 의해 동시에 진입되더라도 독립된 메모리영역에서 생성되어진 값으로 사용됩니다. 즉
static Methoid의 {}안의 선언된 변수와
static 아 아닌 Method의{} 안의 선언된 변수는 똑같이 (지역변수)local variable입니다.
n개