Oracle "İlkel veri türleri" sayfasında , Java 8'in imzalanmamış girişler ve uzunlar için destek eklediğinden bahseder:
int: Varsayılan olarak,intveri türü minimum değeri −2 31 ve maksimum değeri 2 31 −1 olan 32 bitlik işaretli ikiye tümleyen bir tamsayıdır . Java SE 8 ve sonrasında,intminimum değeri 0 ve maksimum değeri 2 32 −1 olan işaretsiz 32 bitlik bir tamsayıyı temsil etmek için veri türünü kullanabilirsiniz . Veri türünü işaretsiz bir tamsayı olarakIntegerkullanmak için sınıfı kullanınint. Daha fazla bilgi için Sayı Sınıfları bölümüne bakın. İşaretsiz tamsayılar için aritmetik işlemleri desteklemek için sınıfacompareUnsigned,divideUnsignedvb. Gibi statik yöntemler eklenmiştirInteger.
long:longVeri türü 64-bit ikinin tümleyen tamsayısıdır. İşaretinlongminimum değeri −2 63 ve maksimum değeri 2 63 −1'dir. Java SE 8 ve sonrasında, minimum değeri 0 ve maksimum değeri 2 64 −1 olanlongişaretsiz 64 biti temsil etmek için veri türünü kullanabilirsiniz .longİnt tarafından sağlananlardan daha geniş bir değer aralığına ihtiyacınız olduğunda bu veri türünü kullanın.LongSınıfı da metotlar gibi içerdiğicompareUnsigned,divideUnsignedimzasız için aritmetik operasyonları desteklemek için vblong.
Bununla birlikte, işaretsiz bir uzun veya tamsayı bildirmenin bir yolunu bulamadım. Örneğin aşağıdaki kod, aralık içinde olması gerektiğinde (atanan değer tam olarak 2 64 −1) "değişmez değer aralık dışında" (elbette Java 8 kullanıyorum) derleyici hata mesajını verir. :
public class Foo {
static long values = 18446744073709551615L;
public static void main(String[] args){
System.out.println(values);
}
}
Öyleyse, işaretsiz bir int veya long belirtmenin herhangi bir yolu var mı?