← Назад к вопросам

Какой диапазон значений у переменной типа short?

1.0 Junior🔥 181 комментариев
#Основы Java

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Диапазон значений типа short в Java

Основные характеристики

Тип short в Java — это целое число со знаком (signed integer), которое занимает 2 байта (16 бит) в памяти.

Диапазон значений:

  • Минимальное значение: -32768 (или -2^15)
  • Максимальное значение: 32767 (или 2^15 - 1)

Почему именно такой диапазон?

Так как short занимает 2 байта = 16 бит, и один бит используется для знака (положительное/отрицательное число):

  • Всего комбинаций: 2^16 = 65536
  • Для положительных чисел: 2^15 - 1 = 32767
  • Для отрицательных чисел: -2^15 = -32768
  • Плюс ноль: 0

Итого: от -32768 до 32767 (всего 65536 значений)

Получение min и max значений

public class ShortRange {
    public static void main(String[] args) {
        // Использование констант класса Short
        System.out.println("Min значение short: " + Short.MIN_VALUE);  // -32768
        System.out.println("Max значение short: " + Short.MAX_VALUE);  // 32767
        
        // Объём памяти
        System.out.println("Размер short в битах: " + Short.SIZE);    // 16
        System.out.println("Размер short в байтах: " + Short.BYTES);  // 2
    }
}

Примеры использования

public class ShortExamples {
    public static void main(String[] args) {
        // Объявление переменных типа short
        short minValue = -32768;
        short maxValue = 32767;
        short zero = 0;
        short positiveNumber = 1000;
        short negativeNumber = -5000;
        
        System.out.println("Min: " + minValue);
        System.out.println("Max: " + maxValue);
        System.out.println("Positive: " + positiveNumber);
        System.out.println("Negative: " + negativeNumber);
    }
}

Переполнение (Overflow)

Если значение выходит за границы диапазона, происходит переполнение:

public class ShortOverflow {
    public static void main(String[] args) {
        short max = Short.MAX_VALUE;  // 32767
        
        // ❌ Переполнение: 32767 + 1 = -32768
        short overflowed = (short)(max + 1);
        System.out.println("32767 + 1 = " + overflowed);  // -32768
        
        short min = Short.MIN_VALUE;  // -32768
        
        // ❌ Переполнение: -32768 - 1 = 32767
        short underflowed = (short)(min - 1);
        System.out.println("-32768 - 1 = " + underflowed);  // 32767
    }
}

Преобразование типов

public class ShortConversion {
    public static void main(String[] args) {
        // ✅ Неявное преобразование int в short (если значение в диапазоне)
        int number = 1000;
        short result = (short) number;  // требуется явное приведение типа
        System.out.println(result);  // 1000
        
        // ❌ Потеря данных при преобразовании
        int largeNumber = 100000;
        short converted = (short) largeNumber;  // теряются верхние 16 бит
        System.out.println(converted);  // некорректное значение
        
        // ✅ Преобразование short в int
        short shortValue = 32767;
        int intValue = shortValue;  // автоматическое расширение типа
        System.out.println(intValue);  // 32767
    }
}

Сравнение с другими целыми типами

ТипРазмерMin значениеMax значение
byte1 байт-128127
short2 байта-3276832767
int4 байта-21474836482147483647
long8 байт-92233720368547758089223372036854775807

Когда использовать short?

short полезен когда:

  • Нужно сэкономить память в больших массивах (например, координаты, размеры изображений)
  • Работаешь с сетевыми протоколами где используются 16-битные значения
  • Портируешь код с C/C++ где short — стандартный тип
public class ShortUsage {
    // Массив координат: экономит память
    short[] xCoordinates = new short[10000];
    short[] yCoordinates = new short[10000];
    
    // Вместо int было бы 80 KB, здесь 40 KB
    
    // В большинстве случаев лучше использовать int
    int value = 1000;  // автоматические операции, без приведения типов
}

Важные моменты

  • Short класс имеет методы для работы с диапазоном: Short.MIN_VALUE, Short.MAX_VALUE
  • Арифметические операции над short результируют в int: short a = 1; short b = 2; int c = a + b;
  • Требуется явное приведение при присваивании результата обратно в short
  • Переполнение переносится (wrapping) — нет исключений, значение просто циклится

Практический пример

public class ShortPractical {
    public static void main(String[] args) {
        // Проверка диапазона
        short value = 5000;
        
        if (value >= Short.MIN_VALUE && value <= Short.MAX_VALUE) {
            System.out.println("Значение " + value + " находится в диапазоне short");
        }
        
        // Получение диапазона
        System.out.println("Диапазон short: от " + Short.MIN_VALUE + " до " + Short.MAX_VALUE);
        System.out.println("Всего значений: " + (Short.MAX_VALUE - Short.MIN_VALUE + 1));
    }
}

Резюме: Тип short хранит значения в диапазоне от -32768 до 32767. Это 2-байтовый знаковый целый тип, полезный для экономии памяти, но редко используется в современном коде из-за простоты работы с int.