변수는 변하는 수라고 정의한다. 반대로 변하지 않는 수도 있다.
즉 자바에는 변하는 수와 변하지 않는 수가 있다.
상수는 constant 라고 한다. 상시적으로 항상 그대로인 속성을 가진 수가 상수인 것이다.
프로그램에서 변하지 않아야 하는 수는 상수로 쓰는 것이 안전하다.
변수를 많이 쓰다보면 바뀌지 말아야 할 변수가 있을텐데, 이 변수가 프로그램 실행중에 변경이 된다면 오류가 날 것 이다. (문법에러, 시멘틱 에러) 예를 들어 PI (원주율) 같은 값은 변하지 않으므로 상수이다.
상수는 final 키워드로 선언한다. 대문자로 주로 표기한다.
final double PI = 3.1415926;
일상의 예를 들어보자.
키는 나이가 들면 더 자라지 않는다. 반면 몸무게는 변할 수 있다. 그러므로
final float height = 176.25F;
float weight = 78.2F;
키는 상수 float형으로 로 몸무게는 변수 float 형으로 선언하고 초기화한다.
상수도 변수처럼 사용할 수 있다. final 키워드로 상수를 등록하면 더 이상 값을 할당할 수 없다.
다음처럼 컴파일 에러를 낸다.
final local variable height
-> 지역 상수 height
cannot be assigned
-> 할당이 안된다.
상수에 값을 바꾸려는 시도는 오류를 낸다.
상수는 보통 프로그램 내에서 범위에 제한을 두기 위해 사용하거나 다양한 이유로 사용된다.
final int MAX_COUNT = 1000;
반복문을 돌릴때 최대 1000까지만 허용
final int DELAY = 1000;
1000 밀리 세컨(1초)를 딜레이 시간으로 함.
리터럴은 자바 프로그램에서 사용하는 모든 숫자,문자,논리값 등을 말한다.
사실 우리가 의식하지도 않고 사용하는 숫자 1,2,3,4 나 'a', 'b', 'c' ... 같은 문자들
그리고 true, false 같은 논리값 등을 리터럴 상수라고 한다. 바뀌지 않는 값이니까 상수다.
1,2,3 같은 숫자들도 메모리 상에 로드되어야 되는데
int var1 = 5; 같은 문장이 실행되면 리터럴 상수 풀에서 5를 자져와서 var1 변수에 복수할 수가 있다.
리터럴도 1,2,3 같은 정수들은 기본적으로 4 byte int 형으로 처리되고 실수는 8 byte double형으로 처리되니까 형변환시 유의해야 한다.
long 형은 숫자 리터럴에 l이나 L을 붙여준다. long number1 = 10000L;
float 형은 실수 리터럴에 f나 F를 붙여준다. float realNumber1 = 100.5F;
리터럴은 수학처럼 직관적이기 때문에 어렵지 않다.