1. 由Math.floorMod()引发的思考 System.out.println("关于整数取余"); System.out.println("*************************"); System.out.println(2%10); System.out.println(12%10); System.out.println("结论1:余数为最简被除数"); System.out.println(-2%10); System.out.println(-12%10); System.out.println("结论2:余数为最简被除数(包括符号)"); System.out.println(2%-10); System.out.println(12%-10); System.out.println("结论3:余数为最简被除数(结合结论2说明余数的符号与被除数有关,与除数无关)"); System.out.println(-2%-10); System.out.println(-12%-10); System.out.println("结论4:再次验证结论3"); System.out.println("*************************"); System.out.println("对比Math.floorMod()"); System.out.println(Math.floorMod(2,10)); System.out.println(Math.floorMod(12,10)); System.out.println(Math.floorMod(-2,10)); System.out.println(Math.floorMod(-12,10)); System.out.println(Math.floorMod(2,-10)); System.out.println(Math.floorMod(12,-10)); System.out.println(Math.floorMod(-2,-10)); System.out.println(Math.floorMod(-12,-10)); System.out.println("在前面理解的基础上的记忆"); System.out.println("双正双负 同余数"); System.out.println("单正单负 补除数");
关于整数取余
*************************
2
2
结论1:余数为最简被除数
-2
-2
结论2:余数为最简被除数(包括符号)
2
2
结论3:余数为最简被除数(结合结论2说明余数的符号与被除数有关,与除数无关)
-2
-2
结论4:再次验证结论3
*************************
对比Math.floorMod()
2
2
8
8
-8
-8
-2
-2
在前面理解的基础上的记忆
双正双负 同余数
单正单负 补除数
进程已结束,退出代码 0
2. 有三个数值类型自动转换存在精度丢失的可能 (强制转换都存在精度丢失的可能)
int -> float long ->float long ->double
3. 不要将布尔类型与其它类型进行强制转换,这样可以防止一些常见的错误,如果非要用的话,可以用 a?1;0来进行另类转换
boolean a=false; int b=a?1:0; System.out.println(a); System.out.println(b);
4.
int a=0; a += 2.5; System.out.println(a);当运算符得到一个值,其类型与左侧操作符不同,就会发生强制类型转换 本质就是(int)(a+2.5)
5. >>> 用0填充高位 >>用符号位填充高位