자바 프로그램이 실행되면 JVM은 OS로 부터 메모리를 할당 받고, 그 메모리를 용도에 따라 여러 영역으로 나누어 관리한다.
JVM의 메모리 공간(Runtime Data Area)는 크게 Method(static)영역, Stack영역, Heap 영역으로 구분되고 데이터 타입(자료형)에 따라 각 영역에 나눠서 할당되게 된다
메모리 영역을 공부하기전에 자바에서 선언위치에 따른 변수의 종류를 먼저 알아보자
자바에는 변수의 종류가 너무 많다
이번기회에 명확하게 정리하고 넘어가쟈
기본형변수
참조변수
멤버변수
클래스변수
인스턴스변수
지역변수
매개변수
기본형변수와 참조변수로 나뉜다.
자료의 실제값을 저장한다.
8가지 종류의 타입이 있다.
논리형 : boolean
문자형 : char
정수형 : byte, short, int, long
실수형 : float, double
값이 저장되어 있는 주소값을 값으로 갖는다.
8가지 기본형 변수를 제외한 나머지 타입이다.
대표적으로 String이 있고 사용자가 얼마든지 새로운 클래스를 만들어 낼 수 있기때문에 무한하다.
변수는 크게 네 종류로 변수의 선언된 위치에 따라서 클래스변수, 인스턴스변수, 지역변수, 매개변수로 나뉜다.
더 크게는 선언된 위치가 클래스 영역이면 멤버변수 메소드나 생성자 내부에서 생성되면 지역변수라고 통칭한다
멤버변수는 클래스변수와 인스턴스변수를 통틀어서 부르는 용어이다.
클래스영역에 선언된 변수를 멤버변수라 하며 그 중 앞에 static 이붙은 변수를 클래스 변수라고 한다.
클래스 영역에 선언되고
인스턴스 생성시 만들어진다.
각각의 인스턴스마다 다른 값을 가질 수 있다.
그러므로 인스턴스 생성이 필수이며 각 인스턴스마다 다른 값을 가져야 할 때 사용 된다
인스턴스변수 앞에 static 을 붙이기만 하면 된다.
인스턴스변수가 각각의 인스턴스마다 다른 값을 가질 수 있는 거와 달리
값을 공유하는 변수이다.
클래스 로딩시 생성되며 클래스이름.변수이름
이렇게 인스턴스 생성 필요없이 바 로 쓸 수 있다.
메소드 내에 선언되며 메소드 호출시 생성되고 메소드가 종료되면 사라진다.
흔히 파라미터라고 불린다. 메소드에서 입력값을 받을 때가 있는데 그때 사용되는 변수를 매개변수라고 한다.
매개변수도 매소드 내에 선언된 것으로 간주되므로 지역변수이다.
인자값은 호출시 메소드입력부의 넣는 값이며 이값은 매개변수에 복사되어 대입된다.
message도 생성자 내부에서 선언된 지역변수
메서드나 생성자 내부에서 선언된 변수는 지역변수이다