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

Ответ

Примитивный тип short в Java — это 16-битное целое число со знаком (signed). Его диапазон значений:

от -32 768 до 32 767 (включительно).

Объяснение: Один бит отводится под знак, 15 бит — под величину.

  • Максимальное положительное значение: (2^{15} - 1 = 32 767).
  • Минимальное отрицательное значение: (-2^{15} = -32 768).

Примеры:

short min = -32768;
short max = 32767;

// short s = 32768; // Ошибка компиляции: значение вне диапазона
short s = (short) 32768; // Явное приведение с переполнением
System.out.println(s); // Выведет: -32768

// Как и byte, в арифметике short расширяется до int
short x = 1000;
short y = 2000;
// short z = x + y; // Ошибка: результат типа int
short z = (short) (x + y); // Корректно, результат 3000 после приведения станет -25536 из-за переполнения.
Сравнение с другими целочисленными типами: Тип Размер (биты) Диапазон
byte 8 -128 .. 127
short 16 -32 768 .. 32 767
int 32 -2 147 483 648 .. 2 147 483 647
long 64 -9 223 372 036 854 775 808 .. 9 223 372 036 854 775 807

Ответ 18+ 🔞

А, блядь, short! Ну это ж как младший братишка int, который в школу ещё ходит, сука. Тип такой, 16-битный, со знаком, ёпта. Циферки в нём помещаются, конечно, не ахти какие — от минус тридцати двух тысяч семисот шестидесяти восьми до плюс тридцати двух тысяч семисот шестидесяти семи. Включительно, блядь, не забудь!

А почему так? Да потому что один битик на знак отгрызли, падлы, осталось пятнадцать. Вот и получается: максимум — два в пятнадцатой минус один, а минимум — просто минус два в пятнадцатой. Математика, блядь, ебать её в сраку.

short min = -32768; // Вот, нижняя планка, пиздец
short max = 32767;  // А это потолок, выше не прыгнешь

// short s = 32768; // Ёбта, компилятор тебя тут же наебёт — значение за бортом!
short s = (short) 32768; // А вот так, с явным приведением, можно, но получишь хуйню
System.out.println(s); // И выведет тебе -32768, потому что переполнение, нахуй!

// И запомни, чувак: как только начинаешь с `short` арифметику делать, он сразу в `int` превращается, подлец.
short x = 1000;
short y = 2000;
// short z = x + y; // Не-не-не, блядь, тут тебе ошибка — результат-то `int`!
short z = (short) (x + y); // Правильно — в скобочки всю операцию и каст. Но 3000 не жди, будет -25536, опять перелилось через край, ебанашка.

А чтобы вообще в голове не еблось, вот тебе табличка, смотри:

Тип Размер (в битах, блядь) Диапазон (приготовься читать)
byte 8 -128 .. 127 (мелочь, карманная)
short 16 -32 768 .. 32 767 (уже что-то, но всё равно несерьёзно)
int 32 -2 147 483 648 .. 2 147 483 647 (вот это уже дело, рабочий вариант)
long 64 -9 223 372 036 854 775 808 .. 9 223 372 036 854 775 807 (ну это вообще овердохуища цифр)

Короче, short — это когда память жалко, а большие числа не нужны. Но в 99% случаев все юзают int и не парятся, блядь.