Подтвердить что ты не робот

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?

Почему нам нужно принимать конструкторы либо со строкой, либо с короткой.

4b9b3361

Ответ 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;