[Java] 리터럴(literal)

Junkyu_Kang·2024년 6월 15일

자바

리터럴(literal)은 프로그램 코드에서 고정된 값을 의미합니다. 즉, 리터럴은 변수에 저장되거나 표현식에서 사용되는 값 자체를 말합니다. 예를 들어, 정수, 실수, 문자, 문자열 등 다양한 타입의 리터럴이 있습니다.

자세히 설명하자면:

정수 리터럴: 숫자 자체를 의미합니다.

java
코드 복사
int a = 100; // 여기서 100은 정수 리터럴입니다.
실수 리터럴: 소수점이 있는 숫자입니다.

java
코드 복사
double b = 3.14; // 여기서 3.14는 실수 리터럴입니다.
문자 리터럴: 단일 문자입니다.

char c = 'A'; // 여기서 'A'는 문자 리터럴입니다.

문자열 리터럴: 큰 따옴표(")로 둘러싸인 문자열입니다.

String s = "Hello, World!"; // 여기서 "Hello, World!"는 문자열 리터럴입니다.

자바에서는 문자열 리터럴을 사용할 때, 컴파일러는 이를 String 상수 풀에 저장합니다. 상수 풀은 메모리의 특별한 영역으로, 동일한 문자열 리터럴이 여러 번 사용되더라도 메모리 낭비를 방지하기 위해 동일한 리터럴은 동일한 메모리 위치를 참조하게 됩니다.

예를 들어:

String s1 = "hello";
String s2 = "hello";

위 코드에서 s1과 s2는 동일한 문자열 리터럴 "hello"를 참조하므로, s1 == s2는 true를 반환합니다. 하지만 new 키워드를 사용하여 문자열 객체를 생성하면 새로운 메모리 위치에 저장되므로 참조가 다르게 됩니다.

String s3 = new String("hello");

이 경우 s3는 새로운 객체를 참조하므로, s1 == s3는 false를 반환하게 됩니다. 이처럼 리터럴은 값 그 자체를 의미하며, 자바에서 문자열 리터럴은 메모리 효율성을 위해 상수 풀에 저장되어 관리됩니다.

profile
강준규

0개의 댓글