我对shortJava中的原始类型有疑问.我使用的是JDK 1.6.
如果我有以下内容:
short a = 2;
short b = 3;
short c = a + b;
Run Code Online (Sandbox Code Playgroud)
编译器不想编译 - 它说它"无法从int转换为short"并建议我进行转换short,所以这样:
short c = (short) (a + b);
Run Code Online (Sandbox Code Playgroud)
确实有效.但我的问题是为什么我需要施放?a和b的值在short- 范围内 - 短值范围是{-32,768,32767}.我还需要在我想执行操作时进行投射 - ,*,/(我没有检查过其他人).
如果我对原始类型做同样的int事情,我不需要将aa + bb转换为int.以下工作正常:
int aa = 2;
int bb = 3;
int cc = aa +bb;
Run Code Online (Sandbox Code Playgroud)
我在设计一个类时需要添加两个类型为short的变量,并且编译器希望我进行转换.如果我用两个类型的变量做这个int,我不需要强制转换.
一句小话:原始类型也会发生同样的事情byte.所以,这有效:
byte a = 2;
byte b = 3;
byte c = (byte) (a + b); …Run Code Online (Sandbox Code Playgroud)