长整除
例:(微秒/毫秒)
{
long a = 24 * 60 * 60 * 1000 * 1000;
long b = 24 * 60 * 60 * 1000
System.out.println(a / b);
}
当两个long类型的变量做除法运算;并且这两个long类型是由其他常量合并(多个数据运算)得到的;因为常量的初始化是int类型,而java语言无法确定目标的类型,所以在(a=24606010001000)中是以int来运算的,虽然a定义的是long类型,而在赋值给a之前一直是以int类型进行运算;在运算结束后才被提升为long类型。 所以在计算结束之前数值就已经溢出,故最终a得到的值并不是最初想要的值
解决:
将计算的第一个常量转型为long类型,最终得到的结果就会是一个long类型的数。
{
long a = 24L * 60 * 60 * 1000 * 1000;
long b = 24L * 60 * 60 * 1000;
System.out.println(a / b);
}
初级问题
问:
{
System.out.println(12345+5432l);
}
打印的结果?“66666”?△17777
在这个打印中是:int类型12345加上long类型的5432;在日常显示中小写字母 ’ l ’ 与数字 ’ 1 ’ 是比较容易混淆的,所以应该避免单独使用小写字母 ’ l ';
{
System.out.println(12345+5432L);
}