1. 정수 리터럴

이제 새로운 흥미로운 주제인 리터럴에 대해 살펴보겠습니다. 프로그램 코드로 직접 작성된 데이터를 리터럴 이라고 합니다 . 우리는 이전 데이터에 대해 이야기하는 것이 아니라 기본 유형 및 String유형의 값에 대해 이야기하고 있습니다.

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

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

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

Java에서는 리터럴을 포함한 모든 항목에 유형이 있습니다. 기본적으로 코드의 모든 정수 리터럴(정수)은 ints. int 유형은 표준 Java 정수 유형입니다.

또한 정수 리터럴을 코드의 바이트 변수 또는 짧은 변수에 할당하기로 결정하면 아무런 문제가 없습니다. 리터럴 값이 변수 유형이 저장할 수 있는 값 범위 내에 있는지 확인하기만 하면 됩니다.

Java 컴파일러는 byte문제를 일으키지 않고 변수에 정수 리터럴 100을 할당할 수 있음을 이해할 만큼 똑똑합니다.

예:

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

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

예:

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

10자리 이상의 큰 숫자를 읽는 것이 얼마나 어려운지 알고 계셨습니까? 코드가 30억인지 300억인지 ​​즉시 알 수 없습니다. 코드를 더 읽기 쉽게 만들기 위해(이것이 중요합니다!) Java에서는 숫자 리터럴에 밑줄을 삽입할 수 있습니다(숫자 값에는 영향을 주지 않음).

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

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

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



2. 실수 리터럴

코드에서 정수뿐만 아니라 부동 소수점 리터럴(실수)도 지정할 수 있습니다.

실제로 규칙은 매우 간단합니다. 코드의 숫자에 소수점이 있으면 숫자는 부동 소수점 리터럴입니다. 문자 그대로가 아니라 double문자 그대로입니다.

부동 리터럴을 만들 수 있지만 그렇게 하려면 숫자 끝에 문자 'F'(또는 'f')를 넣어야 합니다 .

예:

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

그런데 간단하게 )를 사용하여 정수 리터럴을 float 또는 double 리터럴로 명시적으로 변환할 수 있습니다. 예: appending the suffix 'F' (for float) or D (for double)

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

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

오자 수학적 표기법 최종 값
1.23E2
1.23 * 102
123.0
1.23E3
1.23 * 103
1230.0
1.23E-6
1.23 * 10-6
0.00000123
1E6
1.0 * 106
1000000.0
1E-10
1.0 * 10-10
0.0000000001


3. 문자열 리터럴

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

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

이러한 각 리터럴은 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.";
이 줄을 화면에 출력하면 모든 텍스트가 한 줄에 표시됩니다!


4. 문자 리터럴

코드에서 문자열 리터럴뿐만 아니라 개별 문자로 구성된 리터럴도 지정할 수 있습니다. 우리는 단일 문자로 구성된 문자열이 아니라 유형이 인 리터럴에 대해 이야기하고 있습니다 char.

문자열과 달리 문자 리터럴은 작은따옴표 로 묶습니다 . 작은 따옴표 안에는 문자가 하나 있어야 하며 문자 하나만 있어야 합니다. 빈 작은따옴표는 사용할 수 없습니다.

예:

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

마지막 예는 특수 표기법을 사용하여 유니코드 문자를 할당합니다. 먼저 접두사 가 있고 \u그 뒤에 4개의 16진수 문자가 있습니다. 다음 단원에는 이에 대한 자세한 정보가 포함되어 있습니다.