일반적으로 프로그래밍을 처음 접하게 되면 가장 먼저 접하게 되는 내용 중에 하나가 바로 변수이다. 변수가 어떤 내용을 가지고 있기에 프로그래밍을 배우면 입문부터 배우게 되는 걸까?
그 이유는 바로 프로그램의 근간이라고 말할 수 있는 데이터(값)를 프로그래밍에서는 변수라고 부르고 사용하기 때문이다. 다르게 말하면 변수는 프로그래밍에서 없으면 안 되는 필수 요소이다. 이해를 돕기 위해서 설명은 데이터와 변수가 같다고 이야기하지만, 의미적으로 같게 사용하고 있을 뿐 완전히 똑같은 형태를 가지고 있지는 않다. 정확한 내용은 아래에서 설명할 변수의 선언과 초기화를 보면 된다.
그럼 현실과 빗대어 실제 프로그램에서 사용되는 변수의 역할을 설명해보자. 지금 쇼핑을 하러 가서 물건을 산다고 하면 물건을 살 때 필요한 지갑과 같은 존재가 변수이다. 만일 물건을 사려고 하는데 지갑에 돈이 없거나 아니면 지갑을 잃어버린 상황이라면 물건을 살 방법이 없는 것처럼 프로그램에서도 변수가 없다면 데이터가 없다는 말이기 때문에 결국 할 수 있는 일이 없다. 프로그래밍을 처음 접하거나 이해하기 어려운 사람들은 단순하게 변수는 데이터다 정도로 이해하고 넘어가도 문제는 없다. 다만 이런 개념이다 정도는 알고 넘어가면 좋을 것 같다.
final
변수(Variable)란, 값을 저장할 수 있는 메모리 상의 공간을 의미한다. 좀 더 쉽게 말해 변수란 단 하나의 값을 저장할 수 있는 공간이라 할 수 있다.
자바에서 변수를 사용하기 위해서는 변수를 선언해야 한다. 변수를 선언하는 이유는 값을 저장하는 공간을 확보하겠다는 이야기이다. 정확히는 컴퓨터가 가진 메모리를 사용하겠다고 미리 컴퓨터에게 말하는 것이다.
변수를 선언하는 이유
컴퓨터에 메모리가 부족하다고 프로그램이 실행이 안 되는 이유는 이렇게도 설명이 가능하다.
메모리가 부족한 OS
변수를 선언하는 것은 미리 자원을 확보하는 동시에 사용한다는 의미를 가지고 있기 때문에 변수를 선언하지 않는다면 프로그램은 값(데이터)을 담아둘 공간이 없어 값을 사용할 수 없다.
변수를 선언하는 방법은 다음과 같다.
String message;
변수를 선언하는 방법은 변수 타입과 변수명을 함께 작성하는 것이다. 위의 예제는 String(문자) 타입의 message라는 이름을 가진 변수를 선언한 내용이다. 변수 타입은 변수에 담는 값의 성질과 직접적으로 연관되어 있다. 그렇기 때문에 어떤 값을 변수에 담느냐에 따라 변수 타입을 결정해야 한다. 변수는 값이 변수 타입이 맞지 않으면 담을 수 없고 반대로 값은 변수 타입에 맞지 않으면 저장될 수 없다.
변수는 변수를 선언한 후 값 할당해주어야만 사용할 수 있다. 경우에 따라 초기화를 하지 않고도 사용할 수 있지만 기본적으로는 변수는 선언과 초기화가 이루어져야 사용할 수 있다.
// 변수 선언
String message1;
// 변수 초기화
message1 = "Hello World";
// 변수 선언 및 초기화
String message2 = "Hello World";
변수의 초기화는 위의 예시처럼 선언과 초기화를 각각 하는 방법과 선언과 초기화를 동시에 하는 방법도 있다. 한 문장에 변수를 여러 개 선언하는 방법도 있지만 추천하지 않는 방법이니 되도록이면 아래와 같은 변수 초기화 구문은 지양하는게 좋다.
// 다중 변수 선언
String message1, message2;
기본형 변수와 참조 변수로 나뉜다.
기본형 변수는 자료의 실제값을 저장한다.
8가지 종류의 타입이 있다.
논리형 : boolean
문자형 : char
정수형 : byte, short, int, long
실수형 : float, double
참조 변수는 값이 저장되어 있는 주소값을 값으로 갖는다.
8가지 기본형 변수를 제외한 나머지 타입이다.
대표적으로 String이 있고 사용자가 얼마든지 새로운 클래스를 만들어낼 수 있기 때문에 무한하다.
크게 멤버 변수와 지역 변수로 나뉜다.
클래스 이름.변수 이름
과 같이 인스턴스를 생성하지 않고 바로 쓸 수 있다.예제를 보고 직접 구분해보자!
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이 매개변수에 복사되어 넣어진다.