"아미고, 네가 부럽다. 새로운 것을 배우는 것은 정말 멋진 일이야! 그리고 오늘 새롭고 흥미로운 주제인 리터럴이 너를 기다리고 있어."

"분명히 저는 지구상에서 가장 행복한 로봇 학생이라고 말해야 할 것 같습니다, Rishi. 음, 새로운 지식을 흡수할 준비가 되었습니다!"

"그럼 바로 시작하겠습니다. 리터럴은 프로그램 코드에 직접 작성된 특정 데이터입니다. 우리는 단지 데이터에 대해 말하는 것이 아닙니다. 우리는 기본 유형과 문자열에 대해서만 이야기하고 있습니다.

예를 들어 다음 코드가 있다고 가정합니다.

암호 리터럴
int a = 5;
int b = a + 10;
String s = "Sum=" + (a + b);
5
10
"Sum="

"이 코드의 리터럴은 숫자 5 , 숫자 10 및 문자열 ' Sum = '입니다.

정수 리터럴

"Java에서는 리터럴을 포함한 모든 것이 유형을 갖습니다. 코드의 모든 정수 리터럴(정수)은 int 입니다 . int 유형은 표준 Java 정수 유형입니다."

"이런 종류는 알아요. 써본 적 있어요."

"int 외에 다른 정수 유형을 기억하십니까? 메모리 공간을 덜 차지하는 것도 있습니까?"

"물론이지! 바이트와 쇼트."

"그것이 바로 그 것입니다. 따라서 코드에서 정수 리터럴을 byte 또는 short 유형의 변수에 할당하기로 결정하면 아무런 문제가 없습니다. 가장 중요한 것은 리터럴 값이 해당 값의 범위 내에 있다는 것입니다. 변수의 유형은 저장할 수 있습니다. Java 컴파일러는 바이트 변수에 정수 리터럴 100을 할당할 수 있음을 이해할 만큼 똑똑합니다.

예:

암호 설명
int a = 300;
이것은 잘 컴파일됩니다.
byte a = 100; 
이것은 잘 컴파일됩니다.
byte a = 300; 
최대 바이트 값이 127이므로 컴파일 오류가 발생합니다.

" 롱 타입 은요 ?"

"또한 코드에 이 유형의 리터럴을 작성할 수 있습니다. 이렇게 하려면 정수 끝에 라틴 문자 'L' 또는 'l'을 추가합니다.

예:

암호 설명
long a = 3000000000L; 
이것은 잘 컴파일됩니다.
long a = 3000000000; 
컴파일 오류: 30억은 int 리터럴에 비해 너무 큽니다.
int a = 3000000000L; 
컴파일 오류: 리터럴은 long이지만 변수는 int입니다. 또한 30억은 최대 정수보다 큽니다.

"10자리 이상의 큰 숫자를 읽는 것이 얼마나 어려운지 알고 계셨습니까?

"예, 로보비전을 활성화하지 않으면 우리가 말하는 것이 30억인지 30인지 즉시 명확하지 않을 것입니다."

"코드를 더 읽기 쉽게 만들기 위해(이것이 중요합니다!) Java에서는 숫자 리터럴에 밑줄을 삽입할 수 있습니다(숫자 값에는 영향을 주지 않음).

"위의 예는 좀 더 명확하게 하기 위해 밑줄로 다시 작성할 수 있습니다.

암호 설명
long a = 3_000_000_000L; 
이것은 잘 컴파일됩니다.
long a = 3_000_000_000; 
컴파일 오류: 30억은 int 리터럴에 비해 너무 큽니다.
int a = 3_000_000_000L; 
컴파일 오류: 리터럴은 long이지만 변수는 int입니다. 또한 30억은 최대 정수보다 큽니다.

"밑줄 대신 쉼표를 사용하는 것이 더 익숙할지라도 이것은 읽기에 훨씬 더 편리합니다!"

"하지만 쉼표는 이미 다른 용도로 사용되기 때문에 숫자 리터럴에 쉼표를 사용할 수 없습니다. 예를 들어 메소드를 호출할 때 인수를 서로 분리하는 경우입니다.

실수 리터럴

"코드에서 정수뿐만 아니라 부동 소수점 리터럴(실수)도 지정할 수 있다는 것을 이미 짐작했을 것입니다."

"복식과 수레 모두?"

"예. 실제로 규칙은 매우 간단합니다. 코드의 숫자에 소수점이 있으면 숫자는 부동 소수점 리터럴입니다. 리터럴이 아니라 이중 리터럴입니다. 부동 리터럴 을 만들 려면 숫자 끝에 문자 'F'(또는 'f')를 넣어야 합니다 .

예:

암호 설명
double a = 100.0; 
이것은 잘 컴파일됩니다.
double a = 100.;
이것은 잘 컴파일됩니다.
double a = .0;
이것은 잘 컴파일됩니다.
float a = 100.0f; 
이것은 잘 컴파일됩니다.
float a = 100.0; 
컴파일 오류가 발생합니다. 변수는 float이지만 리터럴은 double입니다.

"그런데 단순히 접미사 'F' ( float 의 경우 ) 또는 D( double 의 경우 )를 추가하여 정수 리터럴을 float 또는 double 리터럴로 명시적으로 변환할 수 있습니다. 예:

암호 설명
double a = 100D; 
이것은 잘 컴파일됩니다.
float a = 100F; 
이것은 잘 컴파일됩니다.
int a = 300D; 
컴파일 오류가 발생합니다. 변수는 int이지만 리터럴은 double 입니다 .

"부동 소수점 리터럴은 과학적 표기법을 사용할 수 있습니다 . 숫자의 부호 있는 부분 외에도 10의 거듭제곱을 지정할 수도 있습니다. 예:

오자 수학적 표기법 최종 값
1.23E 2 _ 1.23*10 2 123.0
1.23E 3 _ 1.23*103 1230.0
1.23 E -6 1.23*10 -6 0.00000123
1E 6 _ 1.0 *10 6 1000000.0
1E -10 _ 1.0*10 -10 0.0000000001

문자열 리터럴

"코드에서 전체 텍스트 줄을 지정할 수도 있습니다. 문자열을 코드의 일부가 아닌 데이터(리터럴)로 처리하도록 컴파일러에 지시하기 위해 전체 문자열을 양쪽에 큰따옴표로 묶습니다.

"한 줄의 코드에 여러 개의 큰따옴표가 있으면 쌍으로 나뉩니다. 첫 번째 큰따옴표는 리터럴의 시작을 나타냅니다. 다음은 리터럴의 끝을 나타냅니다. 그 다음은 다시 한 번 새로운 리터럴의 시작 그리고 다음은 두 번째 리터럴의 끝을 표시합니다.

"각각의 리터럴은 String 입니다 .

암호 설명
"+"+"+"+"+"+"+"+"+"
한 줄에 5개의 리터럴이 있습니다. 각각은 하나의 '+' 문자로 구성됩니다.
""
이 리터럴은 빈 문자열입니다. 문자가 없는 문자열입니다.
"2+3"+"-5"
여기에는 두 개의 리터럴이 있습니다. 결과는 숫자가 아닌 문자열 '2+3-5'입니다.
"return"+";"
여기에도 두 개의 리터럴이 있습니다. 여기에는 반환문이 없습니다.

"문자열 리터럴이 너무 길면 여러 줄로 분할하고 '더하기 연산자'와 함께 붙일 수 있습니다.

암호 설명
String s = "I hold it true, whate'er befall"
         + "I feel it when I sorrow most;"
         + "'Tis better to have loved and lost"
         + "Than never to have loved at all.";
이 줄을 화면에 출력하면 모든 텍스트가 한 줄에 표시됩니다!

문자 리터럴

"문자열이 아닌 단일 문자인 리터럴이 필요한 경우 어떻게 해야 합니까? 단일 문자로 구성된 문자열을 만들어야 합니까?"

"아니요, 그런 경우에는 유형이 인 리터럴이 필요합니다 char. 그런 리터럴의 시작과 끝이 어떻게 지정되는지 짐작할 수 있습니까?"

"작은따옴표?"

"예, 그리고 작은따옴표 안에는 한 문자만 있어야 합니다. 빈 작은따옴표는 사용할 수 없습니다.

예:

암호 설명
'A'
형식이 char인 리터럴입니다. 라틴 문자 'A'가 포함되어 있습니다.
'@' 
형식이 char인 리터럴입니다. '@' 기호가 포함되어 있습니다.
'' 
형식이 char인 리터럴입니다. 일본어 문자가 포함되어 있습니다. 그리고 이것도 가능합니다.
'\u1f3a'
형식이 char인 리터럴입니다. 숫자로 지정된 유니코드 문자를 포함합니다.

"마지막 예제는 특수 표기법을 사용하여 유니코드 문자를 할당합니다. 먼저 접두사 가 있고 그 \u뒤에 4개의 16진수 문자가 있습니다. 다음 단원에서 이에 대해 자세히 알아볼 것입니다."