1. 데이터 타입
메모리에 저장되는 방식에 따라 기본형 변수, 참조 변수로 나뉜다.
1) 기본형 변수 (Primitive variable)
- 프로그래밍 언어에서 미리 만들어 둔 타입(가장 많이 쓰이는 데이터 타입을 쉽게 사용하기 위함)
- 변수에 할당된 메모리에 직접 값이 저장된다.
- 비교적 단순 데이터
- 예) int, double, boolean, char 등
2) 참조형 변수
- 여러 데이터들이 복합적으로 모여있는 데이터
- 변수에 할당된 메모리에 데이터의 ‘레퍼런스’(주소값)가 저장된다.
- 비교적 복합적인 데이터
- 예) String, System, ArrayList 등
- 사용자가 얼마든지 새로운 클래스(데이터 타입)를 만들어 낼 수 있기 때문에 무한하다.
👁🗨 구분 방법
자료형의 이름이 소문자로 시작 - 기본형 (예 : int)
자료형의 이름이 대문자로 시작 - 참조형 (예 : String)
2. 선언 위치에 따른 분류
변수는 선언위치에 따라 크게 멤버변수와 지역변수로 나뉘고, 멤버변수는 클래스변수, 인스턴스 변수로 나뉜다.
1) 클래스 영역
1-2) 멤버변수
- 클래스 영역에 선언된 변수로, ‘클래스변수, 인스턴스변수’를 통틀어 칭한다.
① 인스턴스 변수
- 인스턴스를 생성할 때 만들어지므로, 사용하기 위해서는 인스턴스를 먼저 생성해야 한다.
- 인스턴스는 독립적인 저장공간을 가지므로 서로 다른 값을 가질 수 있다.
- JVM내에 힙 영역에 생성된다
② 클래스 변수
- 인스턴스변수 앞에 static을 붙이면 선언 된다.
- 클래스변수는 인스턴스를 생성하지 않고도 바료 사용할 수 있다는 특징이 있으며,
'클래스 이름.클래스 변수' 와 같은 형식으로 사용한다.
- 인스턴스마다 독립적인 저장공간을 갖는 인스턴스 변수와는 달리, 클래스 변수는 모든 인스턴스가 공통된 저장공간(변수)을 공유하게 된다. => 항상 공통된 값을 갖는다.
- 클래스변수는 클래스가 메모리에 '로딩(loading)' 될 때 생성되어 프로그램이 종료될 때까지 유지된다.
- JVM내에 메소드 영역에 생성된다.
2) 메소드 영역
2-1) 지역변수(로컬변수)
- 메서드 내에 선언되어 메서드 내에서만 사용 가능, 메서드가 종료되면 소멸되어 사용할 수 없다.
- for문 또는 while문의 블럭 내에 선언된 지역변수는, 지역변수가 선언된 {블럭}내에서만 사용 가능하며, 블럭을 벗어나면 소멸되어 사용할 수 없게 된다.
- JVM내에 스택 영역에 생성된다.
매개변수(파라미터)
- 메소드에서 입력값을 받을 때 사용되는 변수
- 인자(파라미터)값은 호출 시 메소드 입력부의 넣는 값이며 이 값은 매개변수에 복사되어 대입된다.
- 매개변수도 매소드 내에 선언된 것으로 간주하므로 지역변수이다.
public class test {
int iv;
static int cv ;
public void method() {
int iv;
}
public void makeSum(int startVal, int endVal) {
}
참고자료 :