Ответ
Диапазоны значений определены в Java Language Specification (JLS). Удобнее всего получить их через константы в классах-обёртках.
Способ 1: Через константы MIN_VALUE и MAX_VALUE (наиболее практичный)
// Целочисленные типы (со знаком)
System.out.println("byte: " + Byte.MIN_VALUE + " ... " + Byte.MAX_VALUE); // -128 ... 127
System.out.println("short: " + Short.MIN_VALUE + " ... " + Short.MAX_VALUE); // -32768 ... 32767
System.out.println("int: " + Integer.MIN_VALUE + " ... " + Integer.MAX_VALUE); // -2147483648 ... 2147483647
System.out.println("long: " + Long.MIN_VALUE + " ... " + Long.MAX_VALUE); // -9223372036854775808 ... 9223372036854775807
// Типы с плавающей точкой
System.out.println("float: " + Float.MIN_VALUE + " ... " + Float.MAX_VALUE); // 1.4E-45 ... 3.4028235E38
System.out.println("double: " + Double.MIN_VALUE + " ... " + Double.MAX_VALUE); // 4.9E-324 ... 1.7976931348623157E308
// Символьный тип (беззнаковый)
System.out.println("char: " + (int)Character.MIN_VALUE + " ... " + (int)Character.MAX_VALUE); // 0 ... 65535
Примечание: Float.MIN_VALUE и Double.MIN_VALUE — это наименьшее положительное ненулевое значение. Для отрицательного предела используйте -Float.MAX_VALUE.
Способ 2: Через документацию или JLS Точные формулы диапазонов:
byte: -2⁷ ... 2⁷-1int: -2³¹ ... 2³¹-1long: -2⁶³ ... 2⁶³-1char: 0 ... 2¹⁶-1 (беззнаковый)
Почему это важно: Знание диапазонов предотвращает переполнение (overflow/underflow), что критично в финансовых расчётах, системах управления памятью и криптографии.