Java-экземпляр Short object в Java
Мне было интересно, почему мы можем сделать:
Long l = 2L;
Float f = 2f;
Double d = 2d;
или даже
Double d = new Double(2);
а не
Short s = 2s; //or whatever letter it could be
ни
Short s = new Short(2); //I know in this case 2 is an int but couldn't it be casted internally or something?
Почему нам нужно принимать конструкторы либо со строкой, либо с короткой.
Ответы
Ответ 1
Но вы можете сделать это:
Short s = 2;
Или это:
Short s = new Short((short)2);
Или это:
Short s = new Short("2");
Любое из вышеперечисленных действий будет работать до тех пор, пока число находится в диапазоне [-2 ^ 15, 2 ^ 15-1]
Ответ 2
Одно из основных правил в Java заключается в том, что любой результат математической операции будет храниться в переменной большого размера, чтобы избежать усечения. Например, если вы добавляете int long, результат будет длинным. Следовательно, любая операция над байтом, char или short приведет к int, даже если вы добавили 1 к байту. Есть два способа сохранить результат в том же типе данных:
a) вы выполняете явное литье:
short s=10;
s=(short)(s+1);
b) Вы можете использовать автоматическое приращение коротких операций, чтобы спросить JVM о неявной кастинге:
short s=10;
s+=21;
ИЛИ
short s=10;
s++;
если вам нужен короткий или байтовый литерал, они должны быть отлиты, так как для short
или s
нет суффикса типа short
:
byte foo = (byte)100000;
short bar = (short)100000;