为什么在java中乘法(*)的结果会出错

为什么在java中乘法(*)的结果会出错,java,Java,我是Java新手,只想计算一年中的毫秒数,但结果并不像预期的那样 long milisecondsInYear = 1000*60*60*24*365; System.out.println(milisecondsInYear); // Expect 31536000000 but get 1471228928 请给我一些建议。提前感谢您。无论何时进行任何计算,java都会假定并将其计算为int,即使您将结果保存在一个长变量中 实际结果不能放入int变量中,因此得到该值 要解决这个问题,您需要

我是Java新手,只想计算一年中的毫秒数,但结果并不像预期的那样

long milisecondsInYear = 1000*60*60*24*365;
System.out.println(milisecondsInYear); // Expect 31536000000 but get 1471228928

请给我一些建议。提前感谢您。

无论何时进行任何计算,java都会假定并将其计算为int,即使您将结果保存在一个长变量中

实际结果不能放入
int
变量中,因此得到该值

要解决这个问题,您需要在末尾添加一个
L
,让java知道这实际上是一个漫长的过程

long milisecondsInYear = 1000*60*60*24*365L;
System.out.println(milisecondsInYear); // Expect 31536000000 but get 1471228928

这已经跨越了很长的范围。你正在做
int
算术中的所有数学运算。使用
1000L*60*60*24*365
(注1)