Java System.currentTimeMillis()的行为异常

Java System.currentTimeMillis()的行为异常,java,Java,这是我的代码块来显示这种奇怪。 我用毫秒比较了两次。74天后的时间t1以毫秒为单位,90天后的时间t2以毫秒为单位。我的期望值是t1

这是我的代码块来显示这种奇怪。 我用毫秒比较了两次。74天后的时间t1以毫秒为单位,90天后的时间t2以毫秒为单位。我的期望值是t1失败。与预期一样,相同的代码在Javascript中运行良好

类比较{
公共静态void main(字符串[]args){
长t1=System.currentTimeMillis()+(74*24*60*60*1000);
长t2=System.currentTimeMillis()+(90*24*60*60*1000);

如果(t1
74*24*60*60*1000
溢出
int
。为了防止溢出,在第一个操作数中添加
L
,以便在
long
中执行每一次乘法:
74L*24*60*60*1000
TimeUnit.DAYS。托米利斯(74)
将更具可读性和正确性。谢谢。它成功了:)作为一般性的评论,值得将
L
放在第一个数字上,以确保在结尾之前不会溢出:
74*24*60*60
不会溢出,但其他一些计算可能会溢出。@y反过来说,我会把它添加到答案中。如果它起作用,你应该接受答案,给予回答者信任。谢谢@JWoodchuck。错过了。