У меня вопрос о примитивном типе short
в Java. Я использую JDK 1.6.
Если у меня есть следующее:
short a = 2;
short b = 3;
short c = a + b;
компилятор не хочет компилировать - он говорит, что он "не может преобразовать из int в short" и предлагает сделать команду cast short
, так что это:
short c = (short) (a + b);
действительно работает. Но мой вопрос: зачем мне бросать? Значения a и b находятся в диапазоне short
- диапазон коротких значений равен {-32,768, 32767}.
Мне также нужно включить, когда я хочу выполнить операции -, *,/(я еще не проверял других).
Если я делаю то же самое для примитивного типа int
, мне не нужно бросать aa + bb в int
. Следующее прекрасно работает:
int aa = 2;
int bb = 3;
int cc = aa +bb;
Я обнаружил это при разработке класса, где мне нужно было добавить две переменные типа short, и компилятор хотел, чтобы я сделал бросок. Если я делаю это с двумя переменными типа int
, мне не нужно бросать.
Спасибо вам заблаговременно.
Небольшое замечание: то же самое происходит и с примитивным типом byte
. Итак, это работает:
byte a = 2;
byte b = 3;
byte c = (byte) (a + b);
но это не так:
byte a = 2;
byte b = 3;
byte c = a + b;
Для long
, float
, double
и int
нет необходимости бросать. Только для значений short
и byte
.