> Java > java지도 시간 > Java 정수 리터럴의 선행 0이 값을 변경하는 이유는 무엇입니까?

Java 정수 리터럴의 선행 0이 값을 변경하는 이유는 무엇입니까?

Barbara Streisand
풀어 주다: 2024-12-29 21:29:14
원래의
873명이 탐색했습니다.

Why Do Leading Zeros in Java Integer Literals Change Their Value?

앞에 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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