1.1.4.1 算术运算符

114 阅读2分钟

[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。