//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
为什么需要将天数转换为类型,以便正确评估表达式?
答案 0 :(得分:2)
Java是从左到右。
days * 24 * 60 * 60 * 1000L
int * int * int * int * long
int * int * int * long
int * int * long
int * long
long
您还可以完成以下操作:
1000L * days * 24 * 60 * 60
long * int * int * int * int
long * int * int * int
long * int * int
long * int
long
但......在你的情况下它不应该改变任何东西。我运行你的代码,两种方法都返回相同的结果。也许date.getTime()
返回了另一个值?