변수
컴퓨터 메모리(RAM)는 수많은 번지들로 구성된 데이터 저장 공간이다. 프로그램은 데이터를 메모리에 저장하고 읽는 작업을 지속적으로 수행한다. 이때 데이터를 어디에, 어떤 방식으로 저장할지 정해져 있지 않다면 메모리 관리가 매우 어려워질 것이다. Java는 이러한 문제를 해결하기 위해 변수를 사용한다.
변수는 데이터를 저장할 메모리의 위치를 나타내는 이름이다. 즉 하나의 값을 저장할 수 있는 메모리 번지에 붙여진 이름이다. 변수를 통해 프로그램은 메모리 번지에 값을 저장하고 읽을 수 있다. 메모리 상에 데이터를 보관할 수 있는 공간을 확보해야 하는데, 적절한 공간을 확보하기 위해서 변수의 타입이 등장한다.
자바는 정수와 실수만 변수로 저장할 수 있다. 이는 정수형 변수에 정수값을 저장하고, 실수형 변수에 실수값을 저장하는 것으로 이뤄진다.
변수를 사용하려면 변수 선언이 필요한데, 변수 선언은 어떤 타입의 데이터를 어떻게 저정할 것인지 그리고 변수 이름이 무엇인지를 결정하는 것이다.
int age; // 정수(int) 값을 저장할 수 있는 age 변수 선언
double value; // 실수(double) 값을 저장할 수 있는 value 변수 선언
변수 이름은 첫 번째 글자가 문자여야 하고, 중간부터는 문자, 숫자, $, _를 포함할 수 있다. 다만 변수가 합성어일 경우 camelCase(ex. computerScore)로 작성하는 것이 좋다. 한글을 이용한 변수도 작명이 가능하나, 권장하는 바는 아니다.
변수가 선언되었다면 값을 저장할 수 있는데, 대입연산자인 =
를 사용한다. 우측 값을 좌측 변수에 대입한다고 이해하면 될 것이다.
int score; // 변수 선언
score = 90; // 값 대입
변수 선언은 저장되는 값의 타입과 이름만 결정한 것이지, 아직 메모리에 할당된 것은 아니다. 변수에 최초로 값이 대입될 때 메모리에 할당되고, 해당 메모리에 값이 저장된다.
변수에 최초로 대입하는 행위를 변수 초기화라고 하고, 이때의 값을 초기값이라고 한다. 초기값은 다음과 같이 변수를 선언함과 동시에 대입할 수도 있다.
초기화되지 않은 변수는 아직 메모리에 할당되지 않았기 때문에 변수를 통해 메모리 값을 읽을 수 없다. 초기화되지 않은 변수를 연산식에 사용할 경우 컴파일 에러가 발생한다. 따라서 다음은 잘못된 코딩이다.
int value;
int result = value + 20;
int value
에서 변수가 선언되었지만, 초기화되지 않았기 때문에 value + 10
에서 value 변수값은 읽어올 수 없다. 따라서 위 코드는 다음과 같이 변경해야 한다.
int value = 40;
int result = value + 20;
변수는 출력문이나 연산식에 사용되어 변수값을 활용한다. 다음 코드는 변수를 문자열과 결합 후 출력하거나 연산식에서 활용하는 모습을 보여준다.
package ch02.sec01;
public class VariableUseExample {
public static void main(String[] args) {
int hour = 3;
int minute = 5;
System.out.println(hour + "시간" + minute + "분");
int totalMinute = (hour*60) + minute;
System.out.println("총" + totalMinute + "분");
}
}
// 실행 결과
// 3시간 5분
// 총 185분
그리고 변수는 또 다른 변수에 대입되어 메모리 간에 값을 복사할 수 있다. 다음 코드를 보자.
int x = 30; // 변수 x에 30을 대입
int y = x; // 변수 y에 변수 x 값을 대입
다음 코드는 두 변수의 값을 교환하는 방법을 보여준다. 두 변수의 값을 교환하기 위해서 새로운 변수를 선언하였다.
package ch02.sec01;
public class VariableExchangeExample {
public static void main(String[] args) {
int x = 3;
int y = 5;
System.out.println("x:" + x + ", y:" + y);
int z = x;
x = y;
y = z;
System.out.println("x:" + x + ", y:" + y);
}
}
// 실행 결과
// x:3, y:5
// x:5, y:3
'개발 관련 학습 > Java' 카테고리의 다른 글
Java 기초 문법 : 자료형 - 숫자 타입 (0) | 2022.12.10 |
---|---|
Java 기초 문법 : 실행문과 세미콜론 (0) | 2022.12.07 |
Java 기본 문법 : 주석 (0) | 2022.12.07 |
Java 기본 문법 : 패키지, 클래스, 메소드 (0) | 2022.12.07 |