
아래와 같은 코드를 작성했다고 해보자.
package variable;
public class Var1 {
public static void main(String[] args) {
System.out.println(10);
System.out.println(10);
System.out.println(10);
}
}
이 코드는 숫자 10을 세 번 출력한다.
만약 출력값을 20으로 바꾸고 싶다면, 세 줄 모두 직접 수정해야 한다.
출력하는 코드가 100개라면, 100개를 모두 바꿔야 한다.
또한 사용자가 입력한 값을 출력하고 싶다면 어떻게 해야 할까?
입력 값은 항상 변한다. 어떤 사용자는 100을 넣고, 또 다른 사용자는 200을 넣을 수도 있다. 이처럼 값이 변하는 상황에서는 어딘가에 값을 저장해두고 필요할 때 꺼내 쓰는 기능이 필요하다.
이 문제를 해결하기 위해 변수(variable)라는 기능을 제공한다.
변수는 말 그대로 변할 수 있는 수, 즉 데이터를 담아두는 저장소다.
변수를 사용하려면 먼저 선언해야 한다.
int a; // 변수 선언
a = 10; // 변수 초기화
System.out.println(a);
int a; → 정수를 담을 수 있는 저장소 a를 만든다. a = 10; → 변수 a에 처음으로 값을 넣는다. System.out.println(a); → 변수 이름을 쓰면 저장된 값을 읽을 수 있다. 변수의 값은 변경할 수도 있다.
int a;
a = 10;
System.out.println(a); // 10 출력
a = 50;
System.out.println(a); // 50 출력
변수의 값을 바꾸면 기존 값은 사라지고 새로운 값으로 대체된다.
Java에서 변수를 선언만 하고 초기화하지 않은 채 사용하려고 하면 컴파일 오류가 발생한다.
int a;
System.out.println(a); // 오류 발생: 변수 a가 초기화되지 않았다.
Java는 로컬 변수(메서드 안에서 선언한 변수)를 초기화하지 않으면 사용할 수 없도록 강제한다.
이는 예상치 못한 값(쓰레기 값)이 사용되는 문제를 방지하기 위함이다.
단, 클래스의 멤버 변수(필드)는 별도의 초기화를 하지 않아도 각 타입의 기본값이 자동으로 들어간다.
Java의 변수는 담을 수 있는 값의 종류에 따라 타입(type)이 다르다.
int a = 100; // 정수
double b = 10.5; // 실수
boolean c = true; // 불리언 (true/false)
char d = 'A'; // 문자 하나
String e = "Hello"; // 문자열
L을 붙인다. f를 붙인다. 'A'처럼 사용한다. "Hello"로 표현한다. 변수 이름에는 규칙과 관례가 있다.
int, class 등)는 사용할 수 없다. _, $만 사용할 수 있다. studentCount, orderDetail _로 표기한다. USER_LIMIT