Как узнать диапазон значений для примитивных типов в Java?

«Как узнать диапазон значений для примитивных типов в Java?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Диапазоны значений определены в 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⁷-1
  • int: -2³¹ ... 2³¹-1
  • long: -2⁶³ ... 2⁶³-1
  • char: 0 ... 2¹⁶-1 (беззнаковый)

Почему это важно: Знание диапазонов предотвращает переполнение (overflow/underflow), что критично в финансовых расчётах, системах управления памятью и криптографии.