중요한 프로그래밍 능력 중의 하나가 바로 '값'을 잘 다루는 것 입니다. 값을 저장하는 공간인 변수를 잘 이해하고 활용하는 것은 그 능력을 얻기 위한 첫걸음입니다.
변수(variable)란?
수학에서의 변수는 '변하는 수'라고 정의하지만 프로그래밍언어에서의 변수란, 값을 저장할 수 있는 메모리상의 공간을 의미합니다. 이 공간에 저장된 값을 변경될 수 있기 때문에 '변수'라는 수학용어의 정의와 상통하는 면이 있어서 이렇게 이름이 붙어졌습니다.
변수의 선언
변수를 사용하려면 먼저 변수를 선언해야하는데, 변수의 선언방법은 다음과 같습니다.
int age;
int = 변수타입, age = 변수이름
'변수타입'은 변수에 저장될 값이 어떤 타입(type)인지를 지정하는 것 입니다. 저장하고자 하는 값을 종류에 맞게 변수의 타입을 선택해서 적어주면 됩니다. 변수의 타입으로는 정수형, 실수형, 논리형, 문자형, 문자열 등이 있습니다.
'변수이름'은 말 그대로 변수에 붙인 이름이다. 변수는 값을 저장할 수 있는 메모리공간이므로 변수의 이름은 메모리 공간에 이름을 붙여주는 것이다. 그래야 그 이름을 이용해서 저장공간(변수)에 값을 저장하고, 저장된 값을 읽어오기도 할 수 있는 것이다.
※주의사항
같은 이름의 변수가 여러 개 존재해서는 안된다. 서로 구별될 수 있어야 하기 때문이다.
int age;
위의 문장은 변수 'age'를 선언한다. 이 변수는 나이를 저장하기 위한 것이고, 나이는 '정수'이므로 변수의 타입을 'int'로 지정하였다. 타입(type)에 대해서는 앞으로 천천히 설명하도록 하겠습니다. 지금은 정수를 저장하려면 변수의 타입을
'int'로 지정하는 정도만 알아두면 되겠습니다.
변수의 초기화
'변수의 초기화란, 변수를 사용하기 전에 처음으로 값을 저장하는 것' 이다.
변수를 선언한 이후부터는 변수를 사용할 수 있으나, 그 전에 반드시 변수를 '초기화'해야 한다. 메모리는 여러 프로그램이 공유하는 자원이므로 전에 다른 프로그램에 의해 저장된 '알 수없는 값'이 남아있을 수 있기 때문에 변수를 초기화 해주어야한다.
변수에 값을 저장할 때는 대입 연산자'='를 이용한다. 수학에서는 양변의 값이 같다는 뜻이지만, 자바에서는 오른쪽의 값을 왼쪽(변수)에 저장하라는 뜻이다. 그래서 대입연산자의 왼쪽에는 반드시 변수가 와야한다.
int age = 25;
변수age를 선언하고 25로 초기화 한다.
위의 그림 1과 그림 2는 서로 같은 의미지만 다른 코드이다. 변수는 한 줄에 하나씩 선언하는 것이 보통이지만, 타입이 같은 경우 콤마(,)를 구분자로 여러 변수를 한 줄에 선언하기도 한다.
<예제1>
자신이 태어난 연도와 나이를 저장하고 출력하기!
연도와 나이를 year과 age로 설정해준 이유는 알아보기 쉽기 위함 입니다.
위와 같이 x와 y로 설정해도 무관합니다.
연도와 나이는 정수형 이므로 변수타입을 int로 설정하기!
그 다음 출력입니다.
출력은 System.out.println을 입력하고 괄호 안에 변수이름을 입력하면 초기화 한 값이 출력이 됩니다.
마무리는 무조건 ;(세모콜론)을 선언을 해주셔야 합니다.
<예제2>
현재 연도 알아보기!
앞의 예제1에서 자신의 나이와 태어난 연도를 출력하는 문제를 풀어봤습니다.
현재 연도 = 태어난 연도 + 자신의 나이 - 1 로 할 수 있습니다.
//현재 연도를 변수 y로 설정하고 코드를 작성해보겠습니다.
<예제3>
예를 들어 1년이 지나서 나이가 한 살이 늘었다고 가정을 한다면 변수를 새롭게 초기화를 해주어야 합니다.
새롭게 초기화 하는 방법은 간단합니다.
중간 중간 출력한 이유는 조금 더 이해를 쉽게 하기 위함입니다.
처리되는 과정을 한번 보겠습니다.
int age = 25;
age = age + 1;
age = 25 + 1;
age = 26;
두 변수의 값 교환하기
다음과 같이 변수 x, y가 있을 때, 두 변수에 담긴 값을 서로 바꾼다고 생각을 해봅시다.
int x =10;
int y= 20;
이와 같은 경우에는 변수를 하나 더 선언해서 x의 값을 임시 저장소로 사용해야 합니다.
int x =10;
int y =20;
int temp;
temp = x;
x = y;
y = temp;
두 변수의 값을 교환하는 것은 마치 두 컵의 담긴 내용물을 바꾸려면 하나의 컵이 더 필요한 것 과 같다.
변수의 명명규칙
변수의 이름처럼 프로그래밍에서 사용하는 모든 이름을 '식별자'라고 하며, 식별자는 같은 영역 내에서 서로 구분될 수 있어야합니다. 그리고 식별자를 만들 때는 다음과 같은 규칙을 지켜야 합니다.
- 대소문자가 구분되며 길이에 제한이 없다.
- 예약어를 사용해서는 안된다.
- 숫자로 시작해서는 안된다.
- 특수문자는 '_', '$' 만을 허용한다.
예약어는 키워드 또는 리져브드 워드라고 하는데, 프로그래밍언어의 구문에 사용되는 단어를 뜻한다. 그래서 예약어는 클래스나 변수, 메서드의 이름으로 사용할 수 없다. 예약어는 앞으로 차차 언급하겠습니다.
기본으로 알아둬야할 예약어 List
- if
- int
- short
- false
- true
- try
- while
- void
- this
- super
- for
- float
- final
- catch
- break
- char
- class
- private
지금은 간단히 훑어만 보는 것을 추천합니다.
변수의 타입
기본형과 참조형
자료형은 크게 '기본형'과 '참조형' 두 가지로 나눌 수 있는데, 기본형 변수는 실제 값을 저장하는 반면, 참조형 벼수는 어떤 값이 저장되어 있는 주소를 값으로 갖는다. 자바는 C언어와 달리 참조형 변수 간의 연산을 할 수 없으므로 실제 연산에 사용되는 것은 모두 기본형 변수임을 참고하면 좋겠습니다.
기본형(primitive type)
- 논리형(boolean), 문자형(char), 정수형(byte, short, int, long), 실수형(double, float) 계산을 위한 실제 값을 저장 합니다. 총 8개
참조형(reference type)
- 객체의 주소를 저장한다. 8개의 기본형을 제외한 나머지 타입