[TOC]
4.1 算术运算符
内容导视:
- 四则运算:+、-、*、/
- 求余数:%
- ++、--
4.1.1 四则运算:加减乘除
这个不用过多介绍,与初等数学一致,直接使用即可。
int a = 5;
int b = 2;
int add = a + b;
int sub = a - b;
int mult = a * b;
int divide = a / b;
7、3、10、2;注意 int 类型只能保存整数,会被削去小数部分。
此外 “+” 除了能够计算加法,还能拼接字符串,之前已经说过:
System.out.println(100 + 2 + "字符串" + 3 * 8);
“102字符串24”;从左至右,遇到字符串就拼接,拼接后还是字符串;记得乘法优先。
4.1.2 求余数:%
求余数也称取模。得到的余数一定小于除数。
如 10 % 3 = 1、11 % 3 = 2、12 % 3 = 0;
int i = 11 % 4;
11 除以 4,商为 2,余数为 3;所以 i = 3。
% 的本质
a % b = a - a / b * b
知道了上面的式子,自己试着算一下吧:
System.out.println(-10 % 3);
System.out.println(10 % -3);
System.out.println(-10 % -3);
计算结果如下:
-10 % 3 = -10 - (-10) / 3 * 3
= -10 - (-3) * 3
= -1
10 % -3 = 10 - 10 / (-3) * (-3)
= 10 - (-3) * (-3)
= 1
-10 % -3 = -10 - (-10) / (-3) * (-3)
= -10 - 3 * (-3)
= -1
4.1.3 ++、--
++ 是让变量保存的值,自加一。
int i = 10;
i++;
System.out.println(i);// i = 11
int i = 10;
++i;
System.out.println(i);// i = 11
++ 放在变量前后的区别
++ 放在变量前:
int i = 10;
int j = ++i;
System.out.println(j);// j = 11
等价于
int i = 10;
i = (int)(i + 1);// 先自加一,后赋值
int j = i;
System.out.println(j);// j = 11
++ 放在变量后:
int i = 10;
int j = i++;
System.out.println(j);// j = 10
int i = 10;
int j = i;// 先赋值,后自加一
i = (int)(i + 1);
System.out.println(j);// j = 10
结论:
当 ++ 出现在==变量前,先自加一,再赋值==;所以 i 自加一等于 11,再赋值给 j 为 11;
当 ++ 出现在==变量后,会先赋值,再自加一==;把 i 赋值给 j 即 10,再 i 自加 1。
反正 i 一定是 11;使用 ++ 或 -- 时,==不会改变运算结果类型==。
例如:
byte b = 1;
b = b + 1;
会报错从 int 转成 byte 可能会有损失
换成如下就可以了,但是要注意别超了 byte 的取值范围,否则强转后会有精度损失。
byte b = 1;
b++;
-- 同理:
int i = 3;// i = 3
int j = i--;// j = 3、i = 2
int z = --j;// j = 2、z = 2
i = 2、j = 2、z = 2。