У 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?