相关疑难解决方法(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万
查看次数

文字的算术运算是在编译时还是运行时计算的?

我有以下内容:

double timeInMinutes = (double) timeInMilliseconds / (1000 * 60);
Run Code Online (Sandbox Code Playgroud)

操作(1000 * 60)是在编译时还是在运行时完成的?换句话说,在上面的代码片段和运行时间之间是否存在性能差异:

double timeInMinutes = (double) timeInMilliseconds / 60000;
Run Code Online (Sandbox Code Playgroud)

编辑:我的问题不同于Java编译器会预先计算文字的总和吗?因为我在算术运算中混合使用变量和文字.这是一个很小的区别,但正如@TagirValeev在评论中指出的那样(在编译时或运行时计算文字的算术运算?),有些文字虽然可以预先编译,但是没有预编译.

java

27
推荐指数
3
解决办法
1620
查看次数

Java char到字节转换

我一直在测试char铸件,我经历了这个:

public class Test {
    public static void main(String a[]) {
        final byte b1 = 1;
        byte b2 = 1;
        char c = 2;

        c = b1; // 1- Working fine
        c = b2; // 2 -Compilation error
    }
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释为什么当我在字节中添加最后一个时它在1中正常工作?

java scjp

24
推荐指数
2
解决办法
987
查看次数

类型转换为byte和int

我有一个代码片段:

class AutoTypeCast{
    public static void main(String...args){
        int x=10;
        byte b=20;//no compilation error
        byte c=x;//compilation error
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么20会自动键入式浇铸byte,而x不是?

java

0
推荐指数
1
解决办法
521
查看次数

标签 统计

java ×4

casting ×1

primitive ×1

scjp ×1

short ×1