Java(6) - 상수
이번 포스팅에서는 상수에 대해 공부하겠습니다.
1. 상수란?
일단 예시를 보겠습니다.
int num = 1 + 5;
System.out.println(2.4 + 7.5);
여기서 는 1, 5, 2.4, 7.5 총 네개의 상수가 쓰였습니다.
상수는 변수와 마찬가지로 메모리 공간에 값이 저장은 되지만, 변수와 달리 변경할 수 없는 수입니다.
상수와 거의 동등하게 쓰이는 리터럴이란게 있는데, 리터럴(literal)은 프로그램에서 사용하는 모든 숫자 값, 논리 값 등을 말합니다.
이 리터럴은 상수 풀(constant pool)에 저장되어 있습니다.
상수풀은 heap메모리 고정 영역에 생성되어 Java 프로세스의 종료까지 계속 유지되는 메모리 영역입니다.
JVM에서 관리하며 프로그래머가 작성한 상수에 대해서 최우선 적으로 찾고 없으면 상수풀에 추가하고 그 주소값을 리턴합니다.
상수가 메모리에 저장된다는 의미가 상수풀에 저장된다는 의미입니다.
상수의 특징으로
- 상수는 이름이 없다.
- 이름이 없으므로 메모리에 저장된 상수의 값을 변경시킬 수 없다.
가 있습니다.
2. 접미사
우선 예를 하나 들겠습니다.
int num = 10000000000;
의 경우 int형의 범위를 벗어나기 때문에 컴파일 에러가 발생합니다.
long num = 10000000000;
의 경우에도 역시 에러가 발생합니다. long형 변수에 충분히 저장한 크기인데도 말이죠
저희는 정수 포스팅에서 Java에서 정수형 상수는 무조건 int형으로 표현된다고 배웠습니다.
위 코드의 10000000000 역시 int형으로 표현 돼 에러가 발생한 것입니다.
이 경우에는 저 큰 수를 int형이 아닌 long형으로 명시적으로 선언을 해줘야 합니다.
long num = 10000000000L;
실수 역시 마찬가지로 float의 경우 상수 뒤에 F를 붙여주면 됩니다.
댓글남기기