运算符
1 赋值运算符
赋值运算符以符号 “=” 表示,他是一个二元运算符(对两个操作数作处理),其功能是将右方操作数所含的值赋给左方的操作数。
运算符 | 说明 | 实例 | 结果 |
= | 赋值 | a = 7; | a = 7; |
【注】在Java中可以把赋值运算符连在一起使用。如:
a = b = c = 100;
在这个语句中,变量a,b,c都得到了同样的值100,但是在实际开发中不建议使用这种赋值语句。
2 算数运算符
Java中的算数运算符主要有+(加)、-(减)、*(乘)、/(除)、%(求余),它们都是二元运算符。
如下表所示:
运算符 | 说明 | 实例 | 结果 |
+ | 加 | 3 + 4 | 7 |
- | 减 | 7 - 2 | 5 |
* | 乘 | 3 * 5 | 15 |
/ | 除 | 9 / 4 | 2 |
% | 取余 | 104 % 10 | 4 |
【注意】其中的,”+“ 、”-“,运算符还可以作为数据的正负号,如:-3、+23.
3 自增、自减运算符
自增、自减运算符是单目运算符,可以放在操作元之前,也可以放在操作元之后。操作元必须是一个整型或浮点型变量。
自增、自减运算符的作用是使变量的值增1或减1。
两种实际应用的情况:
1、放在操作元前面的自增、自减运算符,会先将变量的值加1(减1),然后再使该变量参与表达式的运算。
2、放在操作元后面的自增、自减运算符,会先使变量参与表达式的运算,然后再将该变量加1(减1)。
如下表所示:
运算符 | 说明 | 实例 | 结果 |
++ | 自增 | a = 7;a ++;或 a = 7;++ a; | a = 8; |
- - | 自减 | a = 7;a - -;或 a = 7;- - a; | a = 6; |
【注意】在for循环语句中,i++或i - -在被当作循环变量控制的时候,二者相同。
4 比较运算符
比较运算符属于二元运算符,用于程序中的变量之间、变量和自变量之间以及其他类型的信息之间的比较。
比较运算符的运算结果是boolean(布尔类型)。当运算符对应的关系成立时,运算结果为true,否则为false。
所有的比较运算符通常作为判断的依据用在条件语句中。
如下表所示:
运算符 | 作用 | 举例 | 操作数据 | 结果 |
> | 比较左方是否大于右方 | ‘a’ > 'b' | 整型、浮点型、字符型 | false |
< | 比较左方是否小于右方 | 156 < 456 | 整型、浮点型、字符型 | true |
== | 比较左方是否等于右方 | 'c' == 'c' | 基本数据类型、引用型 | true |
>= | 比较左方是否大于等于右方 | 479 >= 426 | 整型、浮点型、字符型 | true |
<= | 比较左方是否小于等于右方 | 12.46 <= 57.23 | 整型、浮点型、字符型 | true |
!= | 比较左方是否不等于右方 | 'y' != 't' | 基本数据类型、引用型 | true |
5 逻辑运算符
返回值为布尔值的表达式,如比较运算符,可以被组合在一起构成一个更复杂的表达式。这是通过逻辑运算符来实现的。
逻辑运算符包括&(&&)(逻辑与)、|(||)(逻辑或)、!(逻辑非)。
逻辑运算符的操作元必须是boolean型数据。
在逻辑运算符中,除了“!”是一元运算符之外,其他都是二元运算符。
如下表所示:
运算符 | 含义 | 用法 | 结合方向 |
&、&& | 逻辑与 | 表达式1 &(或&&)表达式2 | 从左到右 |
|、|| | 逻辑或 | 表达式1 |(或 ||)表达式2 | 从左到右 |
! | 逻辑非 | !表达式 | 从右到左 |
【注意】结果为boolean型的变量或表达式可以通过逻辑运算符组合为逻辑表达式。
在进行逻辑运算时的情况:
表达式1 | 表达式2 | 表达式1 && 表达式2 | 表达式1 || 表达式2 | !表达式 |
true | true | true | true | false |
true | false | false | true | false |
false | false | false | false | true |
false | true | false | true | true |
【注意】逻辑运算符 ”&“ 与 ”&&“ 都表示 ”逻辑与“ 的区别:
从上表可以看出,当两个表达式都为true时,”逻辑与“ 的结果才会是true。
1、逻辑运算符 ”&“ 会判断两个表达式。
2、逻辑运算符 ”&&“ 则是针对boolean类型的类进行判断,当第一个表达式为false时,则不去判断第二个表达式,直接输出结果从而节省计算机判断的次数。
故,将这种在逻辑表达式中从左端的表达式可以推断出整个表达式的值称为 ”短路“,而那些始终执行逻辑运算符两边的表达式称为 ”非短路“。”&&“ 属于 ”短路“ 运算符,而 ”&“ 属于 ”非短路“ 运算符。
6 位运算符
位运算符除 ”按位与“ 和 ”按位或“ 运算符外,其他只能用于处理整数的操作数。位运算是完全针对位方面的操作。
6.1 “按位与”运算
”按位与“ 运算的运算符为 ”&“ ,为双目运算符。
算法规则:如果两个整型数据a、b对应位都是1,则结果位才是1,否则为0.
如果两个操作数的精度不同,则结果的精度与精度高的操作数相同。
6.2 “按位或”运算
”按位或“ 运算的运算符为 ”|“ ,为双目运算符。
算法规则:如果两个操作数对应位都是0,则结果位才是0,否则为1.
如果两个操作数的精度不同,则结果的精度与精度高的操作数相同。
6.3 “按位取反”运算
”按位取反“ 运算也称 ”按位非“ 运算,运算符为 ”~“,为单目运算符。
”按位取反“就是将操作数二进制中的1修改为0,0修改为1.
6.4 “按位异或”运算
”按位异或“ 运算的运算符是 ”^“ ,为双目运算符。
算法规则:如果两个操作数的二进制表示相同(同时为0或同时为1)时,结果为0,否则为1.
若两个操作数的精度不同,则结果数的精度与精度高的操作数相同。
6.5 移位操作
除了上述运算符之外,还可以对数据按二进制进行移位操作。
Java中的移位运算符有以下3种:1、<<:左移。
2、>>:右移。
3、>>>:无符号右移。
1)左移就是将运算符左边的操作数的二进制数据,按照运算符右边操作数指定的位数向左移动,右边移空的部分补0。
2)右移,当使用 ”>>“ 符号时,如果最高位是0,右移空的位就填入0;如果最高位是1,右移空的位就填入1.
3)Java还提供了无符号右移 ”>>>“ ,无论最高位是0还是1,左侧被移空的高位都填入0.
【注意】移位运算符适用的数据类型有:byte、short、char、int、long。
7 三元运算符
三元运算符又称:三目运算符。
其表达式为:条件式 ? 表达式1 : 表达式2;
三元运算符的运算规则为:若条件式的值为true,则整个表达式取表达式1的值,否则取表达式2.
8 运算符的优先级
Java中的表达式就是使用运算符连接起来的符合Java规则的式子。
运算符的优先级决定了表达式中运算执行的先后顺序。
从高到底的运算顺序:1、增量和减量运算
2、算数运算
3、比较运算
4、逻辑运算
5、赋值运算
【注意】如果两个运算有相同的优先级,那么左边的表达式要比右边的表达式先被处理。
具体如下表所示:
优先级 | 描述 | 运算符 |
1 | 括号 | () |
2 | 正负号 | +、- |
3 | 一元运算符 | ++、- - 、! |
4 | 乘除 | *、/、% |
5 | 加减 | +、- |
6 | 移位运算 | >>、>>>、<< |
7 | 比较大小 | <、>、>=、<= |
8 | 比较是否相等 | ==、!= |
9 | 按位与运算 | & |
10 | 按位异或运算 | ^ |
11 | 按位或运算 | | |
12 | 逻辑与运算 | && |
13 | 逻辑或运算 | || |
14 | 三元运算符 | ? : |
15 | 赋值运算符 | = |
【注意】在编写程序时尽量使用括号运算符来限定运算次序,以免产生错误的运算顺序。