Java instantiate Short object in Java

2022-09-02 10:34:56

我想知道为什么我们可以做到:

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,则结果将为长整型。因此,对字节、字符或 short 的任何操作都将导致 int,即使您将 1 添加到字节中也是如此。有两种方法可以将结果存储在相同的数据类型中:

a) 您执行显式转换:

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

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

short s=10;  
s+=21;  

short s=10;  
s++;  

如果您需要短文本或字节文本,则必须强制转换它们,因为没有后缀,如 或 for :Ssshort

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

推荐