Ответ
Примитивный тип 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 и не парятся, блядь.