티스토리 뷰
📌 상수와 리터럴
상수는 변하지 않는 값을 저장하는 공간을 의미하며, 한 번 초기화하면 다른 값으로 변경할 수 없다. 변수와 같은 방법으로 선언하지만, 상수임을 알리기 위해 선언 시 자료형 앞에 final 키워드를 붙이고 상수명을 대문자로 정한다.
상수는 코드의 이해를 돕고, 수정을 쉽게 하기 위해 사용한다.
1. 상수의 선언과 초기화
final 자료형 상수명 = 값;
✔ 상수는 반드시 선언과 동시에 초기화해야한다.
✔ 상수의 이름은 대문자로 하고, 여러 단어로 이루어지는 경우 언더바를 사용하는 것이 암묵적인 약속이다.
final int MAX_SCORE = 100;
✔ 상수는 이와 같이 변하지 않는 값을 의미하기 때문에, 기존의 상수는 리터럴이라 부른다.
변수(variable) | 값을 저장하기 위한 공간 (수정 가능) |
상수(constant) | 변하지 않는 값을 저장하는 공간 (수정 불가능) |
리터럴(literal) | 그 자체로 값을 의미 |
//자료형 변수명 = 리터럴;
int score = 80;
//상수키워드 자료형 상수명 = 리터럴;
final int MAX_SCORE = 100;
2. 리터럴 타입과 접미사
✔ 변수나 상수의 자료형은 저장될 리터럴의 자료형에 의해 결정되므로, 당연히 리터럴에도 자료형이 존재한다.
✔ 저장 공간과 리터럴의 자료형이 일치하지 않아도 표현 범위에 따라 허용되기도 한다.
(예) long변수에 int 리터럴 저장 → 더 큰 범위에 작은 범위의 리터럴을 저장하기 때문에 허용. 반대의 경우에는 컴파일 에러 발생
✔ 정수형과 실수형은 여러 자료형으로 나뉘므로, 접미사를 붙여 구분한다. (접미사는 대소문자를 구분하지 않는다)
✔ 가장 자주 사용되는 자료형의 경우 접미사 생략 가능. (정수형의 경우 int, 실수형의 경우 double이 속한다).
✔ 소수점이나 10의 제곱을 의미하는 e, E, 혹은 실수형 리터럴의 접미사를 포함하고 있다면 실수형 리터럴로 간주.
종류 | 자료형 | 접미사 |
논리형 | boolean | |
문자형 | char | |
정수형 | byte, short, int | |
long | l , L | |
실수형 | float | f , F |
double | d , D |
✔ 그리고 10진수 외에 2진수, 8진수, 16진수로 리터럴을 사용할 수 있는데, 접두사를 붙여 구분한다.
✔ 2진수의 접두사는 0b , 8진수의 접두사는 0, 16진수의 접두사로는 0x 또는 0X를 사용한다.
int binNUm = 0b10; // 2진수:10 → 10진수로는 2
int octNum = 010; // 8진수:10 → 10진수로는 8
int hexNum = 0x10; //16진수:10 → 10진수로는 16
✔ JDK 1.7부터 정수형 리터럴의 중간에 구분자로 언더바를 사용할 수 있게 되어 가독성이 높아졌다.
✔ 자주 사용하지는 않지만 pn는 2의 n제곱을 의미하며, p를 사용해 실수 리터럴을 16진 지수 형태로 표현할 수도 있다.
int num = 1_000_000;
0x1p1 = (1 x 16^0) x 2^1 = 1.0 x 2 = 2.0
3. 문자 리터럴과 문자열 리터럴
✔ 작은따옴표로 문자를 하나 감싼 것은 '문자 리터럴'
✔ 큰 따옴표로 문자열을 감싼 것은 "문자열 리터럴"
✔ "문자열 리터럴"은 빈 문자/공백을 허용하지만, '문자 리터럴'은 빈 문자/공백을 허용하지 않는다.
✔ 사실 문자열은 String 클래스이므로 객체를 생성해 참조 변수를 사용해야 하지만, 특별히 아래와 같은 표현도 허용한다.
✔ 그리고 문자열은 덧셈 연산자를 사용해 문자열을 결합할 수 있다.
String str1 = new String("Hello-");
String str2 = "World";
System.out.println( str1 + str2 ); //Hello-World
[참고] 자바의 정석
'BackEnd > JAVA' 카테고리의 다른 글
[Ch.03] 1. 연산자 (0) | 2021.02.28 |
---|---|
[Ch.02] 형식화 출력 함수 printf() / 형변환 (1) | 2021.02.20 |
[Ch.02] 자료형-기본형, 참조형 (0) | 2021.02.20 |
[Ch.02] 변수의 선언과 초기화 (0) | 2021.02.20 |
[Ch.00] JAVA 스터디 시작 + 매 주 후기 (0) | 2021.02.18 |