값을 저장할 수 있는 메모리 상의 공간
하나의 변수에 단 하나의 값만 저장할 수 있으므로, 새로운 값을 저장하게 되면 기존 값은 사라진다.
int age; //age라는 변수를 선언 (int : 변수타입 / age : 변수이름)
변수타입 : 변수에 저장될 값이 어떤 type인지 지정
변수이름 : 변수에 붙인 이름(메모리 공간에 이름을 붙여주는 것) - 서로 구별될 수 있어야하기 때문에 같은 이름의 변수가 여러개 있으면 안됨.
변수를 선언하면, 메모리의 빈 공간에 '변수타입'에 알맞는 크기의 저장공간이 확보되고 앞으로 이 저장공간은 '변수이름'을 통해 사용할 수 있음
변수의 초기화 : 변수를 사용하기 전에 처음으로 값을 저장하는 것
변수를 사용하려면 반드시 '초기화(initialization)'를 해야한다. 그 이유는 메모리는 여러 프로그램이 공유하는 자원이므로 전에 다른 프로그램에 의해 저장된 쓰레기값(garbage value)이 남아있을 수 있기 때문이다.
변수에 값을 저장할 때 대입 연산자(=)를 사용하며, 자바에서는 오른쪽의 값을 왼쪽(변수)에 저장하라는 뜻이다.
int age = 25; // 변수 age를 선언하고 25로 초기화한다.
변수는 한 줄에 하나씩 선언하는 것이 보통이지만, 타입이 같은 경우 콤마(,)를 구분자로 사용하여 여러 변수를 한 줄에 선언하기도 한다.
int a;
int b;
-> int a, b;
int x = 0;
int y = 0;
-> int a = 0, y = 0;
변수에 종류에 따라 초기화를 생략하는 경우도 있지만, 변수를 사용하기 전에 적절한 값으로 초기화하는 것이 좋다.
(클래스 변수와 인스턴스 변수는 초기화 생략 가능)
VarEx1.java
class VarEx1 {
public static void main(String[] args) {
int year = 0;
int age = 14;
System.out.println(year);
System.out.println(age);
year = age + 2000; //age값에 2000을 더해서 year에 저장
age = age + 1; //age에 저장된 값 1증가
System.out.println(year);
System.out.println(age);
int year = 0;
int age = 14;
System.out.println(year);
System.out.println(age);
year = age + 2000;
//처리 과정
-> year = 14 + 2000; //변수 age에 저장된 값(14)을 읽어와서 식에 사용
-> year = 2014 //변수 year에 2014를 저장
age = age + 1
//처리 과정
-> age = 14 + 1; //변수 age에 저장된 값을 읽어온다.
-> age = 15; //변수 age에 15를 저장한다.
두 변수의 값 교환하기
두 변수에 담긴 값을 서로 바꾸려면?
int x = 10;
int y = 20;
x = y; //x = 20, y = 20
y = x; //x = 20, y = 20
-> y의 값을 x에 저장할 때, 이미 x의 값이 없어졌기 때문에 x의 값을 y에 저장해도 소용이 없음.
int x = 10;
int y = 20;
int tmp; //x값을 임시로 저장할 변수를 선언
tmp = x; //x = 10, y = 20, tmp = 10
x = y; //x = 20, y = 20, tmp = 10
y = tmp; //x = 20, y = 10, tmp = 10
프로그래밍에서 사용하는 모든 이름을 '식별자(identifier)'라고 하며, 식별자는 같은 경역 내에서 서로 구분될 수 있어야한다.
변수 명명 규칙
1. 대소문자가 구분되며 길이에 제한이 없다.
-> True와 true는 서로 다른 것으로 간주
2. 예약어를 사용해서는 안 된다.
-> true는 예약어라서 사용할 수 없지만, True는 가능
3. 숫자로 시작해서는 안 된다.
-> top10은 허용하지만, 7up은 허용하지 않는다.
4. 특수문자는 '_'와 '$'만을 허용한다.
-> $harp은 허용되지만, S#arp은 허용되지 않는다.
예약어 : 키워드 또는 '리져브드 워드(reserved word)'라고 하며, 프로그래밍 언어의 구문에 사용되는 단어.
-> 클래스나 변수, 메서드의 이름으로 사용할 수 없다.
자바 프로그래머들의 권장 규칙
1. 클래스 이름의 첫 글자는 항상 대문자로 한다.
-> 변수와 메서드의 이름의 첫글자는 항상 소문자로 한다.
2. 여러 단어로 이루어진 이름은 단어의 첫 글자를 대문자로 한다.
-> lastIndexOf, StringBuffer
3. 상수의 일므은 모두 대문자로 한다. 여러 단어로 이루어진 경우 '_'로 구분한다.
-> PI, MAX_NUMBER
반드시 지켜야하는 규칙은 아니지만, 코드를 이해하기 쉽게 하기 위한 자바 개발자들 사이의 암묵적인 규칙이다.