Back-end/JAVA

02. 변수

peridott 2026. 1. 10. 23:56

1. 변수(variable)

1.1 변수(variable)란?

  • 수학에서 변수란 변하는 수라고 정의하지만 프로그래밍에서는 저장할 수 있는 메모리상의 공간을 의미
  • 이 공간에 저장된 값은 변경될 수 있기 때문에 변수라는 수학용어의 정의와 상통하는 면이 있음
  • 단 하나의 값을 저장할 수 있는 메모리 공간
  • 단 하나의 값만 저장할 수 있으므로, 새로운 값을 저장하면 기존의 값은 사라진다.

1.2 변수 선언과 초기화

int age; // age 라는 이름의 변수를 선언
// 여기서 int는 변수 타입, age는 변수 이름
  • 변수타입 : 변수에 저장될 값이 어떤 '타입(type)'인지를 지정하는 것.
    • 자바는 정수형, 실수형, 문자형 등 다양한  타입을 제공한다.
  • 변수이름 : 변수에 붙인 이름이다.변수는 '값을 저장할 수 있는 메모리 공간' 이므로 변수의 이름은 메모리 공간에 이름을 붙여주는 것이다. 그래야 그 이름을 이용해서 저장공간(변수)에 값을 저장하고, 저장된 값을 읽어오기도 할 수 있는 것이다.
    • 같은 이름의 변수가 여러 개 존재해서는 안된다. 서로 구별될 수 있어야 하기 때문이다.
  • 변수를 선언하면, 메모리의 빈 공간에 '변수타입'에 알맞은 크기의 저장공간이 확보되고, 
  • 앞으로 이 저장 공간은 '변수이름'을 통해 사용할 수 있게 된다.
  • 위의 문장은 변수 'age'를 선언한다.
  • 이 변수는 '나이'는 나이를 저장하기 위한 것이고, '정수(integer)'이므로 변수의 타입을 'int'로 지정하였다.

변수의 초기화

  • 변수를 선언한 이후부터는 변수를 사용할 수 있으나, 그 전에 반드시 변수를 '초기화(initialization)'해야 한다.
  • 메모리는 여러 프로그램이 공유하는 자원이므로 전에 다른 프로그램에 의해 저장된 '알 수 없는 값(쓰레기값, garbage value)'이 남아 있을 수 있기 때문
  • 변수에 값을 저장할 때는 대입 연산자 '='를 이용한다.
  • 수학에서는 양변의 값이 같다는 뜻이지만, 자바에서는 오른쪽의 값을 왼쪽(변수)에 저장하라는 뜻이다.
  • 그래서 대입연산자의 왼쪽에는 반드시 변수가 와야 한다.
ing age = 25; // 변수 age를 선언하고 25로 초기화 한다.
  • 양쪽의 코드는 서로 같은 의미의 다른 코드
  • 변수는 한줄에 하나씩 선언하는 것이 보통이지만, 타입이 같은 경우 콤마','를 구분자로 여러 변수를 한 줄에 선언하기도 한다.
int a;					int a, b;
int b;					int x = 0, y = 0;
int x = 0;
int y = 0;
  • 변수의 종류에 따라 변수의 초기화를 생략할 수 있는 경우도 있지만, 변수는 사용되기 전에 적절한 값으로 초기화 하는 것이 좋다.
  • 변수의 초기화란, 변수를 사용하기 전에 처음으로 값을 저장하는 것

두 변수의 값 교환하기

int x = 10;
int y = 20;
  • 단순하게 변수 x의 값을 y에 저장하고, y의 값을 x에 저장하면 될 것 같지만 그렇게 해서는 원하는 결과를 얻을 수 없다.
  • 변수 y에 저장된 값을 변수 x에 저장
x = y;
  • 변수 x에 저장된 값을 변수 y에 저장
y = x;
  • 첫 번째 단계에서 y의 값을 x에 저장할 때, 이미 x의 값이 없어졌기 때문에 x의 값을 y에 저장해도 소용이 없는 것이다.
  • 그러면 어떻게 해야될까?
  • 다음과 같ㄴ이 변수를 하나 더 선언해서 x의 값을 위한 임시 저장소로 사용하면 된다.
int x = 10;
int y = 20;
int tmp;	// x값을 임시로 저장할 변수를 선언
  • 변수 x에 저장된 값을 변수 tmp에 저장
  • 변수 y에 저장된 값을 변수 x에 저장
  • 변수 tmp에 저장된 값을 변수 y에 저장
  • 두 변수의 값을 교환하는 것은 마치 두 컵에 담긴 내용물을 바꾸려면 컵이 하나 더 필요한 것과 같다.

1.3 변수의 명명규칙

  • '변수의 이름'처럼 프로그래밍에서 사용하는 모든 이름을 '식별자(identifier)'라고 한다.
  • 식별자는 같은 영역 내에서 서로 구분(식별)될 수  있어야 한다.
  • 식별자를 만들 때는 다음과 같은 규칙을 지켜야 한다.
    • 대소문자가 구분되며 길이에 제한이 없다.
      • True와 true는 서로 다른 것으로 간주된다.
    • 예약어를 사용해서는 안된다.
      • true는 예약어라서 사용할 수 없지만, True는 가능하다.
    • 숫자로 시작해서는 안 된다.
      • top10은 허용하지만 7up은 허용되지 않는다.
    • 특수문자는 '_'와 '$'만을 허용한다.
      • $harp은 허용되지만, S$arp은 허용되지 않는다.
  • 예약어는 키워드(keyword) 또는 '리져브드 워드(reserved word)'라고 하는데, 프로그래밍의 구문에 사용되는 단어를 뜻한다.
  • 예약어는 클래스나 변수, 메서드의 이름(identifier)으로 사용할 수 없다.
  • 아래의 표는 자바에서 사용되는 예약어이다.
abstract default if package this assert
do goto private throw boolean double
implements protected throws break else import
public transient byte enum instanceof return
true case extends int short try
catch false interface static void char
final long strictfp volatile class finally
native super while const float new
switch continue for null synchronized  
  • 그 외에 필수적인 것은 아니지만 자바 프로그래머들에게 권장하는 규칙들은 다음과 같다.
    • 클래스 이름의 첫 글자는 항상 대문자로 한다.
      • 변수와 메서드의 이름의 첫 글자는 항상 소문자로 한다.
    • 여러 단어로 이루어진 이름은 단어의 첫 글자를 대문자로 한다.
      • lastIndexOf, StringBuffer
    • 상수의 이름은 모두 대문자로 한다. 여러 단어로 이루어진 경우 '_'로 구분한다.
      • PI, MAX_NUMBER
    • 이 규칙을 따르지 않는다고 해서 문제가 되는 것은 아니지만 가능하면 지키도록 노력하자.
    • 변수의 이름은 짧을수록 좋지만, 약간 길더라도 용도를 알기 쉽게 '의미 있는 이름'으로 하는 것이 바람직하다.
    • 변수의 선언문에 주석으로 변수에 대한 정보를 주는 것도 좋은 생각이다.