반응형
문자 리터럴에서 이스케이프 된 숫자의 Java 의미는 무엇입니까 (예 : '\ 15')?
다음 코드 섹션이 실행될 때 정확히 어떤 일이 발생하는지 설명하십시오.
int a='\15';
System.out.println(a);
이것은 13을 출력합니다;
int a='\25';
System.out.println(a);
이것은 21을 출력합니다;
int a='\100';
System.out.println(a);
이것은 64를 출력합니다.
예를 들어 'a'
, 큰 따옴표로 구분되는 문자열 리터럴과 구별되는 문자 리터럴 (예 :) "a"
을 int
변수에 할당했습니다 . Java는 부호없는 16 비트에서 부호 char
있는 32 비트로 자동 확장 캐스트를 수행합니다 int
.
그러나 문자 리터럴이 백 슬래시 뒤에 1-3 자리 숫자가있는 경우 문자의 8 진수 ( 기본 / 기수 8) 표현입니다. 그러므로:
\15
= 1 × 8 + 5 = 13 (캐리지 리턴,과 동일'\r'
)\25
= 2 × 8 + 5 = 21 (NAK 문자-부정적 승인)\100
= 1 × 64 + 0 × 8 + 0 = 64 (@ 기호;와 동일'@'
)
문자 리터럴 및 이스케이프 시퀀스에 대한 자세한 내용은 JLS 섹션을 참조하세요.
3.10.6 에서 BNF 를 인용하면 :
OctalEscape:
\ OctalDigit
\ OctalDigit OctalDigit
\ ZeroToThree OctalDigit OctalDigit
OctalDigit: one of
0 1 2 3 4 5 6 7
ZeroToThree: one of
0 1 2 3
표기법 \nnn
은 Java의 8 진 문자 코드를 나타냅니다. 따라서 10 진수 13 int a = '\15'
인 8 진수 15의 자동 캐스팅 된 값을 할당합니다 a
.
숫자를 따옴표로 묶었다는 사실은 숫자를 문자 리터럴로 해석하는 것 같습니다. 다음 숫자는 8 진수 여야합니다.
반응형
'program tip' 카테고리의 다른 글
CSS에서 별표 선행 속성은 무엇을 의미합니까? (0) | 2020.09.19 |
---|---|
Java AES 및 자체 키 사용 (0) | 2020.09.19 |
Sublime Text 2 및 3 : 동일한 파일을 여러 번 열기 (0) | 2020.09.18 |
저장 프로 시저 'dbo.aspnet_CheckSchemaVersion'을 찾을 수 없습니다. (0) | 2020.09.18 |
함수 포인터의 요점은 무엇입니까? (0) | 2020.09.18 |