
자바 변수에도 종류가 있는데, 헷갈리지 않게 초장에 개념을 잡고 들어가는게 중요하다.
class Clazz {
public static int clazzVar = 0; // 클래스 변수
}
Clazz clazz1 = new Clazz();
Clazz clazz2 = new Clazz();
// clazz1.clazzVar => 0
// clazz2.clzzVar => 0
clazz1.clazzVar = 1;
// 클래스 변수는 모든 인스턴스가 공유하므로 값이 변하면 변한 값을 공유한다.
// clazz1.clazzVar => 1
// clazz2.clazzVar => 1
class Clazz {
public static int clazzVar = 0; // 클래스 변수
public int insVar = 0; // 인스턴스 변수
}
Clazz clazz1 = new Clazz();
Clazz clazz2 = new Clazz();
// clazz1.insVar => 0
// clazz2.insVar => 0
clazz1.insVar = 1;
// 인스턴스 변수는 각 객체마다 별도로 생성되므로 공유하지 않는 고유 값을 가진다.
// clazz1.insVar => 1
// clazz2.insVar => 0
class Clazz {
public static int clazzVar = 0; // 클래스 변수
public int insVar = 0; // 인스턴스 변수
public void clazzMethod() {
int localVar = 0; // 지역 변수
}
// 메서드 밖에선 localVar 사용 불가
}
class Clazz {
public static int clazzVar = 0; // 클래스 변수
public int insVar = 0; // 인스턴스 변수
public void clazzMethod(int paramVar) { // 매개 변수
int localVar = 0; // 지역 변수
// 메서드 내부에서 paramVar 사용 가능
}
}


정수에 short, 실수에 float, 문자에 char 등
다른 변수 타입도 있는데 왜 이것들만 사용하느냐?
과거 하드웨어가 좋지 않았던 시절,
이런 타입 하나도 속도에 영향을 미쳤던 고대 시절에는
무시할 수 없었던 부분이라고 한다.
하지만 고성능 하드웨어를 탑재한 지금에는,
이런 타입에 신경을 쓰고 얻는 이점보다
나중에 이 타입을 바꿔야할 때 드는 유지보수 비용이 더 커지기 때문에
타입 최적화가 가능하다고 하더라도 개발의 효율을 위해
대표적인 변수 타입만을 사용한다고 한다.
변수는 기본 중의 기본.
개념들을 초장에 확실히 머릿속에 익혀두고 클래스 레벨로 넘어가도록 하자.