JAVA 运算符分类
算数运算符 | (+,-,*,/,%)二元运算符(++,--)一元运算符 |
赋值运算符 | = |
扩展运算符 | +=,-=,*=,/=, |
关系运算符 | >,<,==,>=,<=,!= ,instenceof |
逻辑运算符 | &&,||,! |
位运算符 | &,|,^,~,>>,<<,>>> |
条件运算符 | ? : |
字符串连接符 | + |
1)算术运算符
+,-,*,/,%属于二元运算符(二元运算符:需要两个操作数完成运行计算的计算符)
例如: a+b ;
运算规则:
整数运算
- 如果两个数中有一个是long类型的话那么 结果 也是long类型。
- 没有long时 结果为int (数据类型是 short byte char 结果也是int型)。
浮点型运算
- 如果有一个数是double 那么结果 double类型
- 所有的都是float 时 结果 时 float 类型
取模运算
运用 % 进行 计算 可以是浮点数,但是通常情况下使用的整数。 结果是余数。
注意:取模运算 结果的符号 与左边的操作数符号相同
例如:7%5=2 -7%5=-2
++ ,--属于一元运算符。
例如 : a++
一元运算符注意事项:
例如 ++a ,a++;
两者之前的区分:
- ++a 是先进行加法运算然后在赋值
- a++ 是先赋值在进行加法运算
如下图代码 所示:
2)赋值运算符以及扩展运算符
目的都是用来对变量进行赋值。
举个例子 :
b+=2 → b=b+2 b+2算出的值赋值给b 假设我 b=0 b+2 赋值给 b 那么现在b=2 其余的同理。
3)关系运算符
用来进行比较运算 。运算结果是 false 或 true
注意 := 和 ==是不同的
== 是比较运算符 是比较 两个变量存储位置首地址的。
= 是 赋值运算符 如:b=2;
4)逻辑运算符
用来操作boolean值
运算符 | 说明 |
&(与) 逻辑与 | 只要有一个操作数是false 结果就是false |
|(或)逻辑或 | 只要有一个是操作数是true 结果就是 ture |
&&(与)短路与 | 只要有一个操作数是false 结果就是false |
||(或)短路或 | 只要有一个操作数是ture 结果就是ture |
!(非)逻辑非 | 取反 如:!ture 结果是 false |
^(异或)逻辑异或 | 操作数相同 结果 是 false 不同 结果是 true |
短路问题:
&&只要有一个 false 后面就不再进行判断
|| 只要有一个 true 后面就不再进行判断
& 和 | 所有的都不会进行判断
如下图代码:
图1. 逻辑 &运算
图2短路&&运算
优先级: 逻辑非 >逻辑与 > 逻辑或
5)位运算符
数字在计算机是按照二进制来表示的,而位运算就是针对数字的二进制值进行操作
运算符 | 说明 |
~ | 取反 |
& | 按位与 |
| | 按位或 |
^ | 按位异或 |
<< | 左移运算符 移一位相当于 *2 |
>> | 右移运算符 移一位相当于 /2取商 |
如下代码所示:
注意:当操作数都是 数字型时 ,& ,|,^ 是 位运算符
当操作数都是 boolean类型时 &,|,^是逻辑运算符
5)字符串连接符
对字符串进行连接
如 : “a”+“b” = “ab”
3 + "a" = "3b"
只要有一个 是字符串 那么 就是进行字符串连接操作。
1+3=4
1+"3"="13"
6)条件运算符(三目条件运算符)
用来做 判断赋值
如 a>b ? a=1 : a=2 ;
解释: 如果 a>b =true 那么 a=1 否则 a=2
关于运算符 优先级 的话 建议用 ()来进行优先级运算。但是 逻辑的 优先级一定要记住