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

不同的行为可能会导致精度下降

在Java中,当你这样做

int b = 0;
b = b + 1.0;
Run Code Online (Sandbox Code Playgroud)

您可能会丢失精度错误.但是,如果你这样做,为什么呢?

int b = 0;
b += 1.0;
Run Code Online (Sandbox Code Playgroud)

没有任何错误?

java implicit-cast compound-assignment

30
推荐指数
1
解决办法
2620
查看次数

Java后缀分隔符

有必要使用后缀定界符来表示源代码中使用的常量类型,例如L表示长.但是,对于short和bytes,没有分隔符,所以我需要显式地转换常量值,如下所示:

short x = (short)0x8000;
Run Code Online (Sandbox Code Playgroud)

我想知道Java是否在编译的字节码中采取额外的步骤来实际将其从整数类型转换为short,或者它是否知道这将适合一个单词并使用常量?否则,有没有一种方法可以将这些数字作为后缀来表示短或字节?

java postfix-operator

6
推荐指数
1
解决办法
1111
查看次数

为什么我不能用简短的构造函数参数声明枚举类型?

首先,对不起我的英语......

我正在做一个Enum类型,但我做不到,因为我正在使用 tipo(String nombre, short valor)

我为什么要用tipo(String nombre, int valor)?使用int而不是short

public enum Tipo {

    // The constructor (String, int) is undefined
    DAT ("DAT", -2);



    private String nombre;
    private short valor;

    tipo(String nombre, short valor){
        this.nombre = nombre;
        this.valor = valor;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public short getValor() {
        return valor;
    }

    public void setValor(short valor) {
        this.valor = valor;
    }
}
Run Code Online (Sandbox Code Playgroud)

java enums constructor

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

文字中的隐式转换

默认情况下,Java假定您使用文字定义int值.

short x = 20; // There is an implicit conversion
Run Code Online (Sandbox Code Playgroud)

但是当我们在算术表达式中使用"x"变量时,例如:

short y = x * 2; //DOES NOT COMPILE
Run Code Online (Sandbox Code Playgroud)

我们知道20*2的结果是40,可以很容易地拟合成一个短变量.到底是怎么回事?

java literals implicit-conversion

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