Java在Java中实例化Short对象

我想知道为什么我们能这样做:

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? 

为什么我们需要使用String或short来构造构造函数。

但是你可以这样做:

 Short s = 2; 

或这个:

 Short s = new Short((short)2); 

或这个:

 Short s = new Short("2"); 

只要数字在[-2 ^ 15,2 ^ 15-1]范围内,上述任何一个都可以工作

Java中的一个主要规则是任何数学运算的结果都将存储在一个大型变量中以避免截断。 例如,如果要使用long添加int,则结果将很长。 因此,即使您将1添加到一个字节,对byte,char或short的任何操作都将产生一个int。有两种方法可以将结果存储在同一数据类型中:

a)你做了明确的演员:

 short s=10; s=(short)(s+1); 

b)您可以使用短手操作的自动增量来要求JVM进行隐式转换:

 short s=10; s+=21; 

要么

 short s=10; s++; 

如果你需要短文字或字节文字,它们必须被铸造,因为没有像Ss这样的后缀:

 byte foo = (byte)100000; short bar = (short)100000;