앞에 0이 있는 정수 리터럴의 해석
앞에 0이 있는 정수 리터럴은 Java에서 예기치 않게 동작하여 해당 항목과 다른 숫자 값을 표시할 수 있습니다. 앞에 0이 없습니다. 이 동작은 선행 0을 기본 접두사로 해석하는 데서 비롯됩니다.
숫자 리터럴에 0 접두사가 붙으면 8진수(기본 8) 숫자로 해석됩니다. 이는 8진수 표기법에서 숫자의 범위는 0에서 7까지일 수 있기 때문입니다. 따라서 "0123"은 8진수 123을 나타냅니다.
이 8진수를 10진수로 변환하려면 각 숫자에 해당 거듭제곱을 곱합니다. 8개의 결과를 합산합니다. "0123"의 경우 이 계산은 다음과 같습니다.
(1 * 8 * 8) + (2 * 8) + (3) = 83
따라서 "System.out.println(0123)" 코드는 83을 인쇄합니다.
반대로 "123"은 선행 문자가 없습니다. 0은 10진수로 해석됩니다. 십진수 123은 단순히 숫자(1 2 3)의 합인 123입니다. 따라서 "System.out.println(123)"은 123을 인쇄합니다.
오해 방지
정수 리터럴에서 0이 앞에 오는 예기치 않은 동작을 방지하려면 항상 10진수로 시작하는 것이 좋습니다. 0이 아닌 숫자로. 리터럴을 10진수로 표현하려는 경우 앞에 0이 있으면 안 됩니다.
대체 기본 표기법
8진수는 더 이상 일반적으로 사용되지 않지만, Java에서는 "0x" 접두사를 사용하여 16진수(기본 16) 숫자를 지정하는 방법을 제공합니다. 예를 들어 "0x123"은 16진수 123을 나타내며 이는 10진수 291과 같습니다.
위 내용은 Java 정수 리터럴의 선행 0이 값을 변경하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!