为什么它假设长而没有后缀

时间:2016-04-12 13:52:52

标签: java types suffix

以下代码无法编译,因为x的值为long值。因此,在第二行中,不可能为y分配长值。

long x = 10;
int y = 2 * x;

我的问题是: 第一行在L类型的变量中没有后缀long,是否应该假设它具有int类型?

2 个答案:

答案 0 :(得分:0)

在执行操作之前,您需要转换为int

long x = 10;
int y  = 2 * (int)x;

答案 1 :(得分:0)

您的操作结果必须是int。如果你不做缩小转换o.k.a.在操作中将任何原始数字类型的转换操作转换为int,这意味着您的操作结果将具有更宽范围的数字。通过强制转换,你让编译器知道你确定你的结果将在int的范围内,并且它知道你似乎不会丢失信息(即使你不投,你也可以并期望双重例如,但这是一个完全不同的事情)。您可以找到关于您的问题here的问题的绝佳解释。