2.2.2 상수와 리터럴(constant & literal)

1. 상수 (constant)
값을 저장할 수 있는 공간으로, 변수와 달리 값을 저장하면 다른 값으로 변경할 수 없다.
상수를 선언하는 방법은 변수와 동일하나 변수의 타입 앞에 키워드 'final'을 붙여주면 된다.
final int MAX_SPEED = 10;
상수는 변수와 달리 선언과 동시에 초기화해야하며, 값을 변경할 수 없다.
상수의 이름은 모두 대문자로 하는 것이 관례이며, 여러 단어로 구성된 경우 '_'를 사용한다.
final int MAX_SPEED; // 에러 -> 초기화를 하지 않았기 때문
final int MAX_SPEED = 10;
MAX_SPEED = 20; // 에러 -> 상수는 값을 변경할 수 없음
* 상수가 필요한 이유
상수를 사용하면 코드의 의미가 명확해지며,
다른 값을 계산할 때도 여러 곳을 수정할 필요 없이 상수의 초기화만 다른 값으로 해주면 된다.
► 코드의 이해와 수정을 쉽게한다.
2. 리터럴 (literal)
값을 의미한다.
* 리터럴의 타입과 접미사
리터럴 타입에 의해 변수 값의 타입이 결정된다.
특히, 변수의 타입이 많은 정수형과 실수형에는 리터럴에 접미사가 존재한다.
1) 정수형
- long 타입의 리터럴 : 'L' 또는 'l' 접미사를 사용한다. (숫자 1과 헷갈릴 수 있기 때문에 'L'을 더 많이 사용한다.)
- 2진수 리터럴 : '0b' 또는 '0B' (JDK1.7 이상)
- 8진수 리터럴 : '0'
- 16진수 리터럴 : '0x' 또는 '0X'
- int, byte, short 타입은 접미사가 존재하지 않는다.
- 정수형 리터럴의 중간에 구분자 '_'를 넣을 수 있다. (JDK1.7이상)
int binNum = 0b10; // 2진수 10, 10진수로는 2
int octNum = 010; // 8진수 10, 10진수로는 8
int hexNum = 0x10; // 16진수 10, 10진수로는 16
long big1 = 100_000_000_000L;
long big2 = 100000000000L;
long hex = 0xFFFF_FFFF_FFFF_FFFFL;
2) 실수형
- float 타입의 리터럴 : 'f' 또는 'F'
- double 타입의 리터럴 : 'd' 또는 'D' (생략 가능)
float pi = 3.14f;
double rate1 = 1.618d;
double rate2 = 1.618;
* 타입의 불일치
리터럴의 타입과 변수의 타입이 일치하는 것이 보통이나,
타입이 달라도 저장범위가 넓은 타입에 좁은 타입의 값을 저장하는 것은 허용된다.
int i = 'A'; // 가능 : 'A'의 유니코드인 65가 변수 i에 저장
int l = 123; // 가능 : int 범위 < long 범위
double d = 3.14f; // 가능 : float 범위 < double 범위
byte b = 65; // 가능 : byte 타입에 저장 가능한 범위
short s = 0x1234; // 가능 : short 타입에 저장 가능한 범위
int iE = 0x123456789; // 에러 : int 타입 범위 초과
float fE = 3.14; // 에러 : float 범위 < double 범위, 범위 초과
* 문자 리터럴과 문자열 리터럴
문자 리터럴 [Char] : 작은 따옴표로 문자 하나를 감싼 것 > 'A'
문자열 리터럴 [String] : 큰 따옴표로 두 문자 이상을 감싼 것 > "ABC"
* 문자 리터럴의 공백
문자 리터럴의 경우 '' 안에 반드시 하나의 문자를 포함해야 하지만 (공백 불가)
문자열 리터럴의 경우 "" 안에 문자를 넣지 않아도 된다. (공백 가능)
String str = ""; // 가능 : 내용이 없는 빈 문자열
char ch = ''; // 에러 : ''안에 반드시 하나의 문자 필요
char ch = ' '; // 가능 : 공백문자로 변수 초기화(값 입력)
* 문자 리터럴의 덧셈
피연산자 중 어느 한 쪽이 String이면 나머지 한 쪽을 먼저 String으로 변환한 다음 두 String을 결합한다.
즉, 어떤 타입의 변수도 문자열과 덧셈연산을 수행하면 그 결과가 문자열이 된다.
따라서 기본형 타입의 값을 문자열로 변환할 때는 아무런 내용도 없는 빈 문자열("")을 더해주면 된다.


(ver. 230302)
사실 문자열 리터럴엔,, 예제가 있다는 슬픈 사실이 있다.
추가해서 올릴까 하다가 일단 올려놓고 수정해야지.. 좀 더 빨리 예제를 하겠지.. 싶어서 먼저 올린다.
요새 실무 교육에다 기존에 하던 알바에다 이래저래 바쁘다.
새삼 천천히 돌아왔군 ㅜㅜ 실무교육이 끝나는 5월까지는 진도가 좀 나갔으면 좋겠는데, 더 노력해야지.
그치만 당분간은 코테해야한다...! 허허 할 수 있으니 열심히만 해보자
(ver. 230308)
드디어 ㅜㅜ 올린다
요새 이것저것 배우느라 정신이 없었는데 그래도 성장하는 과정 같아서 좋다.
교육에서 배운것도 틈틈히 적어서 올려볼까 하다가도 일단 너무 욕심부리면 안될 것 같아서 허허
하던 거 병행하면서 틈틈히 정리해야지.
올빼미였던 내가 새벽에 일어나서 공부하는 사람이 되다니 이것이 어른인가 라기엔 내 나이가 있긴 하군,,,ㅎㅎ