> Java > java지도 시간 > Java가 앞에 0이 있는 정수 리터럴을 8진수로 해석하는 이유는 무엇입니까?

Java가 앞에 0이 있는 정수 리터럴을 8진수로 해석하는 이유는 무엇입니까?

Barbara Streisand
풀어 주다: 2024-12-21 11:18:12
원래의
971명이 탐색했습니다.

Why Does Java Interpret Integer Literals with Leading Zeroes as Octal?

앞에 0이 있는 정수 리터럴 해석

Java에서 앞에 0이 있는 정수 리터럴은 8진수(base-8) 숫자로 해석됩니다. 이 동작은 특히 10진수(10진수) 리터럴과 비교할 때 혼란스러울 수 있습니다.

다음 코드를 고려하세요.

System.out.println(0123); // Prints 83
System.out.println(123); // Prints 123
로그인 후 복사

설명:

  • 0123은 0으로 시작하여 8진수 리터럴을 나타냅니다. 8진수를 10진수로 변환하려면 각 숫자에 해당하는 8의 거듭제곱을 곱하고 그 결과를 합산하세요.
(1 * 8 * 8) + (2 * 8) + (3) = 83
로그인 후 복사

따라서 0123은 10진수에서 83으로 해석됩니다.

  • 123에는 앞에 0이 없으므로 십진수 리터럴로 해석되어 다음과 같은 기대값이 나옵니다. 123.

8진수 해석 방지:

예기치 않은 8진수 해석을 방지하려면 8진수를 나타내지 않는 정수 리터럴에서 앞에 오는 0을 생략하면 됩니다.

16진수 리터럴:

Java는 접두사가 0x인 16진수(base-16) 리터럴도 지원합니다. 예:

System.out.println(0x123); // Prints 291
로그인 후 복사

이 경우 0x123은 16진수 값 123을 나타내며 이는 10진수 291과 같습니다.

위 내용은 Java가 앞에 0이 있는 정수 리터럴을 8진수로 해석하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿