long MILLIS_PER_DAY = 24 * 60 * 60 * 1000;
MICROS_PER_DAY/MILLIS_PER_DAY=?
你会在控制台惊奇地发现等于5!
为什么会导致这个结果?也许你还在怀疑是电脑出问题了。
导致这种情况出现的原因是几个int类型相乘还是等于一个int类型,所有是发生越界,解决问题的方法是:
long MICROS_PER_DAY = 24 L* 60 * 60 * 1000 * 1000;
long MILLIS_PER_DAY = 24L * 60 * 60 * 1000;
在24后加L标志,将int类型转为long型。



