它不怀念过去,也不向往未来
它只是现在
上题回顾
public static void main(String[] args) {
final long lg1 = 24 * 60 * 60 * 1000 * 1000;
final long lg2 = 24 * 60 * 60 * 1000;
System.out.println(lg1/lg2);
}
看似程序打印的必是1000,但打印的是5。到底发生了什么?
解析: 计算中发生了数据溢出。Long类型很容易装得下这结果,溢出发生在int数据计算过程中
lg1 = 24 * 60 * 60 * 1000 * 1000 右边的结果是int类型的,其结果int放不下,所以发生了数据溢出
只要修改一下,改为如下代码即可:
public static void main(String[] args) {
final long lg1 = 24L * 60 * 60 * 1000 * 1000;
final long lg2 = 24L * 60 * 60 * 1000;
System.out.println(lg1/lg2);
}
右侧运算含有一个Long类型数据,则其结果则为Long类型,Long可以装下其结果,保证了结果的正确性
这个教训告诉我们:当你在操作很大的数时,千万要提防溢出
每日一题
public static void main(String[] args) {
char x= 'x';
int i = 0;
System.out.print(true ? x : 0);
System.out.print(false ? i : x);
}
THANDKS
- End -