변수

데이터 타입에 따른 분류

기본형 변수와 참조변수로 나뉜다.
기본형변수는 자료의 실제값을 저장한다.

종류
논리형 boolean
문자형 char
정수형 byte, short, int, long
실수형 float, double
참조변수는 값이 저장되어 있는 주소값을 값으로 갖는다.
기본형 변수를 제외한 나머지 타입이며, 대표적으로 String이 있다.

선언 위치에 따른 분류

크게 멤버변수와 지역변수로 나뉘며
멤버변수는 클래스변수와 인스턴스변수를 통틀어서 부르는 용어이다.
클래스 영역에서 선언된 변수를 멤버변수, 그중 앞에 static이 붙은 변수를 클래스 변수라고 한다.

멤버변수

인스턴스 변수

클래스 영역에 선언되고 인스턴스 생성시 만들어 진다. 각각의 인스턴스마다 다른 값을 가질 수 있다. 그러므로 인스턴스 생성이 필수이며 각 인스턴스마다 다른 값을 가져야 할 때 사용된다.

클래스 변수

인스턴스변수 앞에 static을 붙이기만 하면 된다. 인스턴스변수가 각각의 인스턴스마다 다른값을 가질 수 있는 것과는 달리 값을 공유하는 변수이다.
클래스이름.변수이름 이렇게 인스턴스 생성 필요없이 바로 쓸 수 있다.

지역변수

메소드 내에 선언되며 메소드 호출시 생성되고 메소드가 종료되면 사라진다.

매개변수

흔히 파라미터라고 불린다. 메소드에서 입력값을 받을 때가 있는데, 그때 사용되는 변수를 매개변수라고 한다.
매개변수도 매소드 내에 선언된 것으로 간주되므로 지역변수이다.

public class Variable {
    int a;
    static String b;
    void m(int c){
        int d=c;
    }
    public static void main(String args[]) {
        int e=0;
        Variable v = new Variable();
        v.m(e);
    }
}

2번줄 a는 기본형변수이면서 멤버변수의 인스턴스변수
3번줄 b는 참조변수이면서 멤버변수의 클래스변수
4번줄 c는 기본형변수이면서 매개변수 이면서 지역변수
5번줄 d는 기본형변수이면서 지역변수
7번줄 args는 참조변수이면서 매개변수 이면서 지역변수
8번줄 e는 기본형변수이면서 지역변수
9번줄 v는 참조변수이면서 지역변수
10번줄 e는 인자값으로 값0이 매개변수에 복사되어 넣어진다.