리터럴이란?

남형진·2021년 9월 7일
0

코드를 작성하다 문득 이런 의문이 들었다.

// java
int num = 10;

위 코드를 많은 사람들이 num이란 변수에 10을 할당한다고 이해하고 있을 것이다.
그리고 그것이 맞다

그런데 10이라는 숫자 자체는 어디에 저장되어 있다가 변수에 할당되는지 한번쯤 생각해본 적 있을거다.

먼저 우리는 이것을 리터럴이라고 부른다.

이처럼 숫자, 문자, 논리 값들 그 자체를 의미하는 리터럴은
disk의 app이 memory로 load 될 때, constant pool이라는 곳에 저장이된다.
(static으로 선언된 변수도, 이 때 상수풀에 저장된다)

컴파일된 코드가 실행되면서 변수 메모리에 값이 저장되는게 아닌
앱이 실행되는 것 만으로 리터럴들은 상수풀에 저장이된다.

그럼 상수풀에 저장되는 리터럴들은 자바에서 타입을 추론해서 알맞는 byte를 제공하는 것일까?

아니다. 대표적으로 숫자형은 int 타입만큼(4byte)을 제공받는다.

때문에 long 타입의 변수에 값을 할당할 때, long 타입의 범위에 맞게 값을 할당했는데도 에러가 뜨는 경우가 있는데, 리터럴이 기본적으로 int 만큼의 공간을 할당받기 때문이다. 이 경우에는 숫자뒤에 L을 붙이면 해결된다.

profile
세상을 바꾸는 한줄의 코드를 작성하는 개발자

0개의 댓글