【发布时间】:2017-01-26 20:27:17
【问题描述】:
//date is a java.util date
//date.getTime() = 1485462073669
int days = 3600;
long time = date.getTime() + (days * 24 * 60 * 60 * 1000L);
这将导致时间 = 344094777669。 如果我投变量天,结果会有所不同。
date.getTime() + ((long) days * 24 * 60 * 60 * 1000L)
这将导致时间 = 4639062073669
为什么要将天数转换为 long 类型才能正确计算表达式?
【问题讨论】:
-
我更好奇为什么会发生这种情况。第二个表达式是正确的,但我想知道为什么我需要强制转换。根据第一个链接,所有数学都是使用最大的数据类型完成的,所以不应该将所有变量都转换为 long 吗?特别是因为最后一个数字被定义为长类型。
-
如果日期是同一个对象,我看不出这段代码如何给出不同的结果。将 int 转换为 long 应该不会改变任何事情。您确定这两种情况下的日期是同一个实例吗?一个
-
是的,日期对象没有改变。
-
我试过你的代码,但我得到了相同的结果。
标签: java int long-integer multiplication addition