У Oracle «Примітивні типи даних» сторінки , він згадує , що Java 8 додана підтримка для беззнакових цілих чисел і довгих позицій:
int
: За замовчуваннямint
тип даних - це 32-розрядне ціле доповнення, підписане двома, яке має мінімальне значення −2 31 та максимальне значення 2 31 −1. У Java SE 8 та пізніших версіях ви можете використовуватиint
тип даних для представлення 32-бітового цілого числа без підпису, яке має мінімальне значення 0 та максимальне значення 2 32 -1. ВикористовуйтеInteger
клас, щоб використовуватиint
тип даних як ціле без знака. Для отримання додаткової інформації дивіться розділ Класи чисел. Статичні методи , такі якcompareUnsigned
, іdivideUnsigned
т.д. , які були додані доInteger
класу для підтримки арифметичних операцій для цілих чисел без знака.
long
: Типlong
даних - це 64-розрядне ціле доповнення.long
Мінімальне значення підписаного - -2 63 та максимальне значення 2 63 -1. У Java SE 8 та пізніших версіях ви можете використовуватиlong
тип даних для представлення 64-розрядного без підписуlong
, що має мінімальне значення 0 та максимальне значення 2 64 −1. Використовуйте цей тип даних, коли вам потрібен діапазон значень, ширший за ті, що надаються int.Long
Клас також містить методи , такі якcompareUnsigned
, іdivideUnsigned
т.д. , щоб підтримувати арифметичні операції для беззнаковогоlong
.
Однак я не знаходжу способу оголосити непідписане довге або ціле число. Наступний код, наприклад, дає повідомлення про помилку компілятора "літерал поза діапазоном" (я, звичайно, використовую Java 8), коли він повинен бути в діапазоні (присвоєне значення - саме 2 64 -1) :
public class Foo {
static long values = 18446744073709551615L;
public static void main(String[] args){
System.out.println(values);
}
}
Отже, чи є спосіб заявити непідписаний int або long?