[java] 멤버 변수, 지역 변수

심심이·2024년 1월 17일
0

java

목록 보기
6/46

한 줄 정리

	class Variable {
int instanceVariable;     // 인스턴스 변수
static int classVariable; // 클래스 변수(static 변수 또는 공유변수)

void variableMethod() {
    int localVariable = 1;      // 지역변수, 메서드 내에서만 사용 가능
}

}

인스턴스 변수: 인스턴스 생성될 때 만들어지며 힙 영역에 저장. 인스턴스 만들때 변수에 메모리 할당함. 동일한 클래스로부터 생성되었지만 객체화로 개별성 가짐.(붕어빵)
null이나 0, false 등으로 타입에 맞춰 자동 초기화 되어있음.

클래스 변수: static으로 메서드 영역의 static영역에 저장. 공용으로 쓸 수 있다. 클래스명으로 이용해서 접근할 것(클래스명.클래스변수명)

지역 변수: 메서드 내에 선언되는 변수. 스택 메모리에 저장되어 메서드 종료시 바로 소멸됨. 지역 변수는 반드시 초기화 해줘야 함.(그렇지 않고 사용시 초기화 하라고 에러 뜸)


멤버 변수와 local(지역) 변수의 차이점

  • 추상화 : 필요한 속성 및 기능만 뽑아내는 것

  • 멤버 변수(인스턴스 변수): instance 변수와 static 변수를 합친 것을 멤버 변수라고 함.
    참조형=null, int=0, boolean=false로 자동 초기화됨.
    - 인스턴스 변수 : 힙 영역을 사용(GC 발생전까지 생존)
    - 클래스 변수(static 변수) : static 영역에 올라감, JVM 종료 전까지 생존

  • 지역 변수(로컬 변수, 매개변수도 지역변수) : 메소드 안에 있는 변수 등 {}안에서만 사용되는 변수, 메소드를 벗어나는 순간 메모리(ram)에서 삭제. 스택 영역에 보관되고(스택프레임 안) 메소드 종료시에 제거된다.
    반드시 초기화를 해주어야 한다. (직접 초기화를 해야 한다...)

Null = 참조값이 들어가지 않았을 경우 값이 없다는 뜻(*0이 아니고 없다.) => 인스턴스 참조가 단 하나도 되지 않은 객체의 경우(외부,내부 포함) 자바에서 해당 인스턴스 메모리를 삭제한다.(GC:가비지 컬렉션)

  • 인스턴스 변수(필드)와 static변수는 초기화를 하지 않더라도 자동으로 초기화가 된다.
    값을 할당하지 않으면 null이다. (string)
    정수형 데이터타입(byte, short, int, long): 자동적으로 0으로 초기화
    실수형 데이터타입(float, double) : 자동적으로 0.0으로 초기화
    문자형 데이터타입(char) : 자동적으로 ' ' (공백) 으로 초기화
    String을 포함한 클래스 타입 : 자동적으로 null로 초기화

*초기화란, 변수에 어떤 값을 부여하는 것을 초기화라고 한다.

profile
개발하는 심심이

0개의 댓글

관련 채용 정보