Oracle "Primitive data types" 페이지 에서 Java 8이 서명되지 않은 int 및 long에 대한 지원을 추가한다고 언급합니다.
int
: 기본적으로int
데이터 유형은 32 비트 부호있는 2의 보수 정수이며, 최소값은 −2 31 이고 최대 값은 2 31 −1입니다. Java SE 8 이상에서는int
데이터 유형을 사용하여 최소값이 0이고 최대 값이 2 32 -1 인 부호없는 32 비트 정수를 나타낼 수 있습니다 . 데이터 유형을 부호없는 정수로 사용하려면Integer
클래스를 사용 하십시오int
. 자세한 내용은 The Number Classes 섹션을 참조하십시오. 같은 정적 방법compareUnsigned
,divideUnsigned
등이 첨가 된Integer
부호없는 정수에 대한 산술 연산을 지원하는 클래스.
long
:long
데이터 유형은 64 비트 2의 보수 정수입니다. 부호long
있는 값은 최소값 -2 63 이고 최대 값은 2 63 -1입니다. Java SE 8 이상에서는long
데이터 유형을 사용하여long
최소값이 0이고 최대 값이 2 64 -1 인 부호없는 64 비트를 나타낼 수 있습니다 . int에서 제공하는 것보다 더 넓은 값 범위가 필요한 경우이 데이터 유형을 사용하십시오.Long
클래스는 방법이 좋아 포함compareUnsigned
,divideUnsigned
서명에 대한 산술 연산을 지원하는 등long
.
그러나 부호없는 long 또는 정수를 선언하는 방법을 찾지 못했습니다. 예를 들어, 다음 코드는 범위 내에 있어야 할 때 "리터럴이 범위를 벗어났습니다"(물론 Java 8을 사용하고 있음)라는 컴파일러 오류 메시지를 제공합니다 (할당 된 값은 정확히 2 64 -1입니다). :
public class Foo {
static long values = 18446744073709551615L;
public static void main(String[] args){
System.out.println(values);
}
}
그렇다면 unsigned int 또는 long을 선언하는 방법이 있습니까?