[英]Why does java.lang.Long's .longValue() cast its (long) instance value to long?
[英]Why does this Java expression not cast the final value to type long?
//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
为什么需要将天强制转换为类型长才能使表达式正确求值?
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()
返回了另一个值?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.