프로그래밍언어에서의 변수(variable)란 값을 저장할 수 있는 메모리 상의 공간을 의미한다.
수학에서의 변수의 의미인 '변하는 수'와는 의미가 다르지만 변수에 저장된 값은 변경될 수 있기 때문에 의미가 상통한 면이 있다고 볼 수 있다.
메모리란 RAM을 말하며 물리적으로 나누어져 있지만 논리적으로 하나의 연속된 저장 공간인것처럼 다룬다. 저장공간을 나누고 0,1,2..... 같이 연속적으로 메모리 주소를 부여하고 메모리에 값을 저장하거나 읽을 때 사용한다.
하지만 이 는 사람이 사용하기에 불편하고 힘든 면이 있다. 따라서 메모리 저장공간을 나눈 영역에 이름을 부여해 주소대신 이름을 사용 함으로 불편함을 해소 한다.
변수에 값을 저장하기 위해서는 먼저 선언이 필요하다. 이는 메모리 상 값(Data)을 저장할 공간에 마련한다는 것이다.
int A;
변수를 선언하기 위해서는 위와 같은 방법을 사용해야 한다. 만약 타입이 같은 여러개의 변수를 선언하고자 한다면 아래와 같은 방법을 통해 선언할 수 있다.
int A, B;
변수의 초기화는 변수에 처음으로 값을 저장하는 것으로, 모든 변수는 사용하기 전 초기화 하는 것이 좋다.
int A = 0;
int A = 0, B = 15;
변수는 위와 같은 방법을 통해 초기화 할 수 있다.
메모리는 여러 프로그램이 공유하는 자원이다. 따라서 기존에 알수 없는 값(쓰레기 값)이 있을 수 있기 때문에 모든 변수는 사용하기 전에 초기화 하는 것이 좋다,
자바의 변수의 종류에는
자바에서는 변수의 값을 읽어와 사용하기 위해서 일반적으로 변수의 이름을 사용한다.
int A = 2, B = 3, C = 0; // 이처럼 변수가 선언되고 초기화된 변수를 사용한다.
int C = A + B; // A는 2로, B는 3으로 초기화 되었기 때문에 C에 2 와 3을 더한 값 5가 C에 저장된다.
상수(constant)란 한번 만 값을 저장할 수 있는 변수를 의미한다.
변수와 상수 모두 하나의 값만을 저장할 수 있지만 변수는 저장된 값을 변경이 가능하지만 상수는 처음 저장한 값을 변경할 수 없다.
final int A = 10;
상수는 위와 같은 방법으로 변수와 같은 방법을 선언하고 초기화 한뒤 변수와 같은 방법을 통해 사용할 수 있다.
final int A;
A = 10;
위와 같이 선언과 초기화를 따로할 수 있지만 변수와 마찬가지의 이유로 인해 추천되지 않는다.
final int A = 10;
A = 20; // 에러 발생!
만약 이미 값이 저장된 상수에 다시 값을 저장하려 한다면 오류가 발생한다.
식별자는 서로 구분될 수 있어야한다. 따라서 서로 같은 영역 내에서 구분하기 위해 규칙을 따라야 한다.
필수 규칙
1. 대/소문자가 구분되며 길이에 제한이 없다.
2. 예약어를 사용해서는 안 된다.
3. 숫자로 시작해서는 안 된다.
4. 특수문자는 '_'(언더스코어), '$'(달러)만을 허용한다.
권장 규칙
1. 클래스 이름의 첫 글자는 항상 대문자로 한다.
- 변수와 메서드의 이름의 첫글자는 항상 소문자로 한다.
2. 여러 단어로 이루어진 이름은 단어의 첫 글자를 대문자로 한다.
- lastIndexOf, StringBuffer
- lastIndexOF : 클래스 이름이 아니기 떄문에 첫 글자는 소문자이다.
- StringBuffer : 클래스 이름이기 떄문에 첫 글자는 대문자이다.
3. 상수의 이름은 모두 대문자로 한다. 여러 단어로 이루어진 경우'_'(언더스코어바)로 구분한다.
- PI, MAX_NUMBER