[자바] 전역변수, 인스턴스 변수 간단설명

allnight5·2022년 11월 17일
0

자바 개념정리

목록 보기
2/28

변수이름 (인스턴스 변수)

static이 붙은 변수를

클래스 변수, 스태틱 변수라고 하며 전역변수이다

직접대입가능여부

직접대입이 가능하다 Human.population처럼 다이렉트 엑세스이 됩니다.

private와 puvlic과의 관계

관계는 없지만 주로 public이 사용됨.
public static int a;
이런식으로 주로 public이 static앞에 붙습니다.
왜냐하면 static변수는 주로 전역으로 사용되기 때문이죠.

  • 굳이 private사용하기 사례
    private static int m_age;
    public static int getAge(){ return m_age;}
    public static int setAge(int v){ m_age = v;}
    m_age변수는 private를 사용하여 감추고 getAge()나 setAge(int v)는 public을 사용하여 외부에 노출하였습니다.

머라고 부르나?

클래스 변수

메모리 공간

1개 해당 자료형의크기 만큼 자리 잡힙니다.

static변수를 다루는데 있어서 쓰레드 구현시 유의사항이 있습니다
하나의 thread에 의해서만 해당 자원이 다루어져야 한다면.synchronize(해당자원){구현...} 이렇게 하면 다음쓰레드는 해당 코드에 동시에 진입하지 않고 먼저실행된 threa의 {}블럭이 끝날때 까지 기다렸다가 다음쓰레드가 실행되겠습니다.

static이 ---없는— 변수를

인스턴스 변수라고 합니다. 전역이 아님

직접대입가능여부

직접대입이 안되고 반드시 Human aMan = new Human() 과 같이 클래스의 인스턴스를 만들어야지만 사용이 가능하다

private와 puvlic과의 관계

관계없음

뭐라고 부르냐

인스턴스변수=속성=멤버변수

그럼 지역변수(로컬변수)는 먼가?
{}[단위블럭]안에서 생명주기를 가지는 변수를 지역변수라고 합니다.
static Method의 {}안에서 선언된 변수변수는 별개의 thread에 의해 동시에 진입되더라도 독립된 메모리영역에서 생성되어진 값으로 사용됩니다. 즉
static Methoid의 {}안의 선언된 변수와
static 아 아닌 Method의{} 안의 선언된 변수는 똑같이 (지역변수)local variable입니다.

메모리 공간

n개

  • new로 생성된 수만큼 확보
  • 선언된시점의 {}[중괄호블럭]안에서 유효하며 {}바깥에서는 메모리에서 적절히 소멸됨.

참조 : http://semoa.tistory.com/645

profile
공부기록하기

0개의 댓글