我真的很难解决这个错误,而且我在互联网上找不到任何东西。 如果我这样做:
long test = (long) (2147483647 + 1);
它将
test
设置为 int,即使我使用了 long
。为什么?
我尝试使用 max int value 但它仍然不起作用。
long test = (long) (Integer.MAX_VALUE + 1);
投射然后添加
long test = (long) (2147483647) + 1;
System.out.println(test);
2147483648
否则你将添加两个整数然后进行转换
长测试=(长)(2147483647+1);
我们来分析一下。
Java 按特定顺序计算表达式。首先在右侧表达式上计算加法。由于您没有显式定义“2147483647”的数据类型,因此java将其隐式保存为整数。与 1 相同。现在由于您要添加 int 数据类型变量,因此结果是 int。即-1。
这里的问题是java隐式计算数据类型。
在您知道我们需要更大的数据类型的情况下的解决方案。请明确告知java。
在这种情况下,我们可以通过如下的小改动轻松做到:-
长测试=(长)(2147483647L+ 1);
即使你不需要长时间投射。