数值操作
Java 中的数值操作包括标准的算术运算:加号+
、减号-
、乘号*
、除号/
、取余%
运算符 | 说明 | 示例 | 示例结果 |
---|---|---|---|
+ | 加 | 2+3 | 5 |
– | 减 | 10-4 | 6 |
* | 乘 | 4*5 | 20 |
/ | 除 | 6/3 | 2 |
% | 取余 | 5%3 | 2 |
当除法的操作数都是整数时,除法的结果就是整数,小数部分被舍去。
为了实现浮点数的除法,其中一个操作数必须是浮点数。
操作符 %
被称为取余或者取模操作符,可以求得除法的余数。
左边的操作数是被除数右边的操作数是除数。
操作符 %
通常用在正整数上,实际上,它也可用于负整数和浮点值。
只有当被除数是负数时,余数才是负的。
System.out.println("5/2 -> " + 5/2);
System.out.println("5.0/2 -> " + 5.0/2);
System.out.println("-5/2 -> " + -5/2);
System.out.println("-5/-2 -> " + -5/-2);
System.out.println("5%3 -> " + 5%3);
System.out.println("-5%3 -> " + -5%3);
System.out.println("-5%-3 -> " + -5%-3);
System.out.println("3%5 -> " + 3%5);
System.out.println("6%2 -> " + 6%2);
System.out.println("15%7 -> " + 15%7);
System.out.println("21%8 -> " + 21%8);
5/2 -> 2
5.0/2 -> 2.5
-5/2 -> -2
-5/-2 -> 2
5%3 -> 2
-5%3 -> -2
-5%-3 -> -2
3%5 -> 3
6%2 -> 0
15%7 -> 1
21%8 -> 5
5.0/2 -> 2.5
-5/2 -> -2
-5/-2 -> 2
5%3 -> 2
-5%3 -> -2
-5%-3 -> -2
3%5 -> 3
6%2 -> 0
15%7 -> 1
21%8 -> 5
在程序设计中余数是非常有用的。
例如:偶数 %2
的结果总是0 ,而正奇数%2
的结果总是1。所以,可以利用这一特性来判定一个数是偶数还是奇数。
增强操作符
上面的标准算术运算符可以通过一些结合形成增强操作符。
增强运算符实际上是一种简写:
操作符 | 说明 | 示例 | 等价代码 |
---|---|---|---|
+= | 加法赋值操作符 | i+=2 | i= i+2 |
-= | 减法赋值操作符 | i-=2 | i= i-2 |
*= | 乘法赋值操作符 | i*=2 | i= i*2 |
/= | 除法赋值操作符 | i/=2 | i= i/2 |
%= | 取余赋值操作符 | i%=2 | i= i%2 |
int i = 4;
i *= 8-6/3;
System.out.println(i);
24
增强操作符是最后执行的运算:
i *= 8-6/3
相当于i = (8 - (6/3))*i
。
自增和自减
上面的增强操作符,还可以简写:
- 当操作的数是 1 的时候,加法赋值操作符
i+=1
可以简写为i++
- 当操作的数是 1 的时候,减法赋值操作符
i-=1
可以简写为i--
许多语言中,都有 ++
和--
操作符,表示自增和自减。
自增/自减操作符有两种写法:
- 操作符
++
写在变量后面,i++
,读作 i加加;操作符--
写在变量后面,i--
,读作 i减减; - 操作符
++
写在变量前面,++i
,读作 加加i;操作符--
写在变量前面,--i
,读作 减减i;
不同的写法,有不同的表现效果:
操作符 | 说明 | 描述 | 示例代码(其中i初始值 int i =1;) |
---|---|---|---|
++i | 加加i | 将 i 加1,表达式使用的是i加1后的值 | int num = ++i; // num为2,i为2 |
i++ | i加加 | 将 i 加1,表达式使用的是i的初始值 | int num = i++; // num为1,i为2 |
–i | i减减 | 将 i 减1,表达式使用的是i减1后的值 | int num = –i; // num为0,i为0 |
i– | i减减 | 将 i 减1,表达式使用的是i的初始值 | int num = i–; // num为1,i为0 |
int i = 1;
System.out.println("i++ ->" + i++);
System.out.println("i-- ->" + i--);
System.out.println("++i ->" + ++i);
System.out.println("--i ->" + --i);
i++ ->1
i– ->2
++i ->2
–i ->1
i– ->2
++i ->2
–i ->1
如果自增和自减运算同时出现在一个表达式中,理解起来会困难很多:
int i = 1;
int result = i++ + ++i - i-- - --i;
System.out.println(result);
0
这种经常出现在考试或面试题中,结果会是多少?
上面的表达式相当于 1 + 3 – 3 – 1 .
前++是先自增再使用,后++是先使用再自增