相关疑难解决方法(0)

原始类型'短' - 用Java编写

我对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)

java primitive casting short

76
推荐指数
5
解决办法
13万
查看次数

通过向下转换,性能/内存的好处是否无效?

我正在编写一个大型应用程序,我试图尽可能多地保存内存并提高性能.因此,当我有一个我知道的字段只有0 - 10或-100 - 100的值时,我尝试使用short数据类型而不是int.

但是,对于其余的代码来说,这意味着,当我调用这些函数时,我必须将简单的ints 转发为shorts.例如:

方法签名

public void coordinates(short x, short y) ...
Run Code Online (Sandbox Code Playgroud)

方法调用

obj.coordinates((short) 1, (short) 2);
Run Code Online (Sandbox Code Playgroud)

这就像我的整个代码中的所有代码一样,因为文字被视为ints并且不会根据函数参数自动向下转换或键入.

因此,一旦这种向下转发发生,任何性能或内存增益是否真的显着?或者转换过程如此高效,以至于我仍能获得一些收益?

java performance primitive downcast

6
推荐指数
2
解决办法
806
查看次数

标签 统计

java ×2

primitive ×2

casting ×1

downcast ×1

performance ×1

short ×1