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

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

Barbara Streisand
Barbara Streisand원래의
2024-12-21 11:18:12967검색

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으로 문의하세요.