변수는 ‘변수의 선언된 위치’에 따라 클래스변수, 인스턴스변수, 지역변수로 총 세가지이다. 멤버변수(메서드 밖에서 선언된 변수)를 제외한 나머지 변수들은 모두 지역변수이며, 멤버변수 중 static이 붙은 것은 클래스변수, 붙지 않은 것은 인스턴스변수이다.
class Variables{
int iv; // 인스턴스변수
static int cv; // 클래스변수
void method(){
int lv = 0; // 지역변수
}
}
클래스 영역에 선언, 클래스의 인스턴스를 생성할 때 생성된다.
떄문에 인스턴스를 먼저 생성해야 인스턴스 변수의 값을 읽거나 저장할 수 있다.
클래스변수는 인스턴스변수 앞에 static을 붙이기만 하면 된다.
인스턴스변수는 인스턴스가 생성될 떄마다 생성되므로 인스턴스마다 각기 다른 값을 유지할 수 있지만, 클래스 변수는 모든 인스턴스가 하나의 저장공간을 공유하므로, 항상 공통된 값을 가진다.
메서드 내에 선언, 메서드 내에서만 사용가능하며, 메서드가 종료되면 사용할 수 없다.
‘메서드(method)’는 특정 작업을 수행하는 일련의 문장들을 하나로 묶은 것이다.
메서드를 사용하는 대표적인 이유 세가지
이미 Java API(Application Programming Interface)에서 제공하는 메서드들(println 등)을 사용하면서 경험했듯이, 한번 만들어 놓은 메서드는 몇 번이고 호출할 수 있으며, 다른 프로그램에서도 사용이 가능하다.
반복되는 문장들을 묶어서 하나의 메서드로 작성해 놓으면, 반복되는 문장들 대신 메서드를 호출하는 한 문장으로 대체할 수 있다.
이는 전체 소스 코드의 길이에 영향을 주어 변경사항이 발생했을 때 수정해야할 코드의 양이 줄어들어 오류 발생 가능성도 줄일 수 있다.
static int showMenu() { /* 나중에 내용 완성 */ }
static void inputRecord() { /* 나중에 내용 완성 */ }
static void changeRecord() { /* 나중에 내용 완성 */ }
static void deleteRecord() { /* 나중에 내용 완성 */ }
static void searchRecord() { /* 나중에 내용 완성 */ }
static void showRecordList() { /* 나중에 내용 완성 */ }
public static void main (String args[]) {
…
switch(showMenu()) {
case 1: inputRecord();
case 2: changeRecord();
case 3: deleteRecord();
case 4: searchRecord();
default: showRecordList();
}
}