2.1.double运算注意点
System.out.println(10 / 4);
java输出是2,即默认结果是int类型
System.out.println(10.0 / 4);
java输出是2.5,即默认结果为double类型
所以在给double赋值时,要尤为注意:
double d = 10 / 4;
//输出结果为 10 / 4 = 2,2 => 2.0
/*正确写法*/
double d = 10.0 / 4;
2.2.%-取模详讲
%的本质是:
a % b = a - a / b * b
10 % 3 = 1
-10 % 3 = -1
-10 % 3 = (-10) - (-10) / 3 * 3 =(-10) - (-9) = -1
10 % -3 = 1
10 % -3 = (10) - 10 / (-3) * (-3) = 10 - 9 = 1
-10 % -3 = -1
(-10) % (-3) = (-10) - (-10) / (-3) * (-3) = -10 + 9 = -1
口诀:左负双负取负号
2.3.i++和++i的区别
- 自增++作为独立的语句使用:
即 i++;
或者 ++i;
前++和后++都完全等价于 i = i + 1;
- 作为表达式使用:
前++:先运算后赋值
a = 2;
b = ++a;
/*
输出结果为:
a = 3;
b = 3;
*/
后++:先赋值后运算
a = 2;
b = a++;
输出结果为:
/*
输出结果为:
a = 3;
b = 2;
*/
- 深度探索:
int i = 1; i = i++;
结果多少?
其实在赋值时引用了临时变量,步骤为:
- temp = i;
- i = i + 1;
- i = temp;
所以结果为 1
int i = 1; i = ++i;
结果多少?
步骤为:
- i = i + 1;
- temp = i;
- i = temp;
所以结果为 2