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,int
veri 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,int
minimum 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ı olarakInteger
kullanmak 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
,divideUnsigned
vb. Gibi statik yöntemler eklenmiştirInteger
.
long
:long
Veri türü 64-bit ikinin tümleyen tamsayısıdır. İşaretinlong
minimum 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 olanlong
iş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.Long
Sınıfı da metotlar gibi içerdiğicompareUnsigned
,divideUnsigned
imzası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ı?