我刚刚使用数据类型short创建了一个简单的Java程序。
该程序如下所示:

class test
{
    public static void main(String arg[])
    {
        short x=1;
        short x_square=x*x;
    }
}

该程序抛出错误:
java:6: possible loss of precision
found   : int
required: short

编译器如何创建int?此程序中没有int变量,所有变量都声明为short

最佳答案

在算术运算中,如果整数类型都不是int类型,则在Java中整数类型始终被视为long原语。小整数类型提升为int,运算结果为int。因此,x*x类型转换为int,而您正在尝试将其分配给short。您需要显式转换为short才能缩小转换范围。

short x_square=(short)(x*x);
跟随JLS 4.2.2

关于java - 类型中的意外行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17154471/

10-14 00:02