基元类型“short” - Java 中的强制转换
我有一个关于Java中基元类型的问题。我使用的是 JDK 1.6。short
如果我有以下情况:
short a = 2;
short b = 3;
short c = a + b;
编译器不想编译 - 它说它“不能从int转换为短”,并建议我进行强制转换,所以这样:short
short c = (short) (a + b);
真的有效。但我的问题是,为什么我需要施法?a 和 b 的值在 - 短值的范围是 {-32,768, 32767} 的范围内。当我想执行操作时,我还需要强制转换 -, *, / (我还没有检查其他人)。short
如果我对基元类型做同样的事情,我不需要将aa + bb转换为。以下工作正常:int
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;
对于 、 、 和 ,不需要强制转换。仅 for 和 值。long
float
double
int
short
byte