Oracleの「プリミティブデータ型」ページでは、Java8がunsignedintおよびlongのサポートを追加すると記載されています。
int
デフォルトでは、int
データ・タイプは、32ビットの-2最小値を有する2の補数整数、署名され31と2の最大値は31 -1。Java SE 8以降では、int
データ型を使用して、最小値が0、最大値が2 32-1の符号なし32ビット整数を表すことができます。使用Integer
使用するクラスをint
符号なし整数としてデータ型を。詳細については、「番号クラス」のセクションを参照してください。符号なし整数の算術演算をサポートするためにcompareUnsigned
、divideUnsigned
などの静的メソッドがInteger
クラスに追加されました。
long
:long
データ型は64ビットの2の補数整数です。署名さはlong
-2の最小値を有し、63 2の最大値63を-1。Java SEの8以降では、使用することができlong
、符号なし64ビット表現するデータ・タイプをlong
0の最小値及び2の最大値を有し、64 -1。intによって提供される値よりも広い値の範囲が必要な場合は、このデータ型を使用します。Long
このクラスはまた、のような方法が含まれcompareUnsigned
、divideUnsigned
符号なしのための算術演算をサポートするなどlong
。
ただし、unsignedlongまたはintegerを宣言する方法が見つかりません。たとえば、次のコードは、範囲内にある必要がある場合(割り当てられた値は正確に2 64 -1)、「リテラルは範囲外です」(もちろんJava 8を使用しています)というコンパイラエラーメッセージを表示します。:
public class Foo {
static long values = 18446744073709551615L;
public static void main(String[] args){
System.out.println(values);
}
}
それで、unsigned intまたはlongを宣言する方法はありますか?