변수

프로그램 언어에서 변수(variable)는 가장 기본이면서 중요한 문법이다. 변수가 중요한 이유는 프로그램에서 사용하는 데이터가 바로 이 변수에 저장되고 관리되기 때문이다.

 

리터럴과 변수

리터럴(literal)은 '문자로 표현된 데이터'를 의미한다. 리터럴 데이터는 데이터 자체만으로 다른 사람과 소통하는 데 한계가 있다. 이는 리터럴 자체로는 데이터가 가진 의미를 명확하게 전달할 수 없기 때문이다. 리터럴로 작성된 데이터의 의미를 명확하게 전달하기 위해서는 다른 무언가가 필요하다. 그게 바로 변수이다.

 

프로그램에 사용되는 데이터를 좀 더 쉽게 기억하고 데이터의 의미를 명확하게 전달하기 위해서 사용하는 것이 변수이다.

참고로 변수와 비교되는 개념이 상수인데, 변수가 다른 데이터로 값을 변경할 수 있다면 상수는 한번 값을 가진 이후에는 다른 값으로 변경할 수 없는 특수한 변수를 의미한다.

 

변수의 선언과 규칙

변수를 선언할 때는 변수에 저장되는 데이터의 크기를 고려하여 변수 이름 앞에 데이터 타입을 지정해야 한다. 그리고 반드시 문장 종결에 해단하는 세미콜론(;)으로 마무리 한다.

// 데이터 타입 변수이름;
String stringData;

 

변수 이름을 지정할 때는 일정한 규칙을 지켜야 하는데, 이를 네이밍 규칙(naming rule)이라고 한다. 자바의 네이밍 규칙은 다음과 같다.

 

- 반드시 숫자가 아닌 문자로 시작해야 한다.(한글도 가능)

- 공백을 포함할 수 없다.

- 특수 기호는 '$'와 '_'만 허용한다.

- 대/소문자를 구분한다.

- 자바에서 미리 지정한 예약어는 사용할 수 없다.

- 소문자로 시작하고 새로운 단어가 결합되면 첫 글자를 대문자로 변경한다.

 

추가로 변수 이름의 길이는 제약이 없다. 그러나 의미 전달이 가능한 범위 내에서 작명하는 것이 좋으며, 너무 축약된 이름은 가독성을 떨어뜨리기 때문에 사용하지 않는다. 

 

변수와 데이터 타입

변수를 선언할 때 변수의 이름 못지 않게 중요한 것이 바로 데이터 타입이다. 변수가 데이터를 저장하는 그릇이라면, 데이터 타입은 그릇의 용도와 크기를 규정하는 것이라고 생각할 수 있다. 

 

자바는 크게 기본 타입과 참조 타입, 두 가지 형태의 데이터 타입을 지원한다. 기본 타입 데이터는 논리형(Boolean), 문자형(char), 정수형(byte, short, int, long), 실수형( float, double)으로 구분되는 총 8가지 타입이 있다. 기본 타입과 완전 다른 개념의 참조 타입은 다소 복잡한데, 대표적인 참조 타입의 데이터가 바로 문자열(String)과 배열(Array)이다.

 

변수 초기화

변수를 선언한 후에는 선언된 변수에 리터럴 형태의 값을 넣어야 한다. 변수에 값을 할당하기 위해서는 할당 연산자 (=) 또는 대입 연산자를 사용한다. 

int javaScore;
javaScore = 89;

 

선언된 변수에 처음으로 값을 할당하는 것을 초기화(initialize)라고 한다. 

이미 변수에 할당된 값이 있는데 다른 값을 할당하면 기존의 값은 사라지고 새로운 값으로 덮어쓰기(overwriting)된다. 

 

int javaScore = 83;
System.out.print(javaScore); // 83

javaScore = 90;
System.out.print(javaScore); // 90

 

변수를 선언할 때는 이름이 중복되지 않도록 해야 한다. 만약 프로그램에서 변수의 중복을 허용한다면 값을 할당할 때, 어떤 변수에 할당할지 혼란스럽기 때문이다. 따라서 다음에 제시된 소스는 에러가 발생한다.

int javaScore;
int javaScore; // 에러발생

 

변수를 선언만 하고 초기화를 하지 않은 상태에서 사용하려고 해도 에러가 발생한다. 반드시 선언된 변수는 변수를 사용하기 전에 쵸기화되어야 한다.

 

 

728x90

'Language > JAVA' 카테고리의 다른 글

[JAVA] 이름이 있는 break  (0) 2023.10.18
[JAVA] 데이터 타입 변환  (0) 2023.10.18
[JAVA] 연산자  (1) 2023.10.17
[JAVA] 데이터 타입  (1) 2023.10.17
[JAVA] 자바 클래스의 기본 구조  (0) 2023.10.17

+ Recent posts