我刚刚使用数据类型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/