程序是对数据的处理,前面介绍了数据类型以及变量等相关知识,接下来介绍对数据的处理,简而言之就是对数据的运算,运算需要用运算符表明。
1. 运算符
数据之间的运算除了基本的加减乘除之外,还有一些“高级运算”。对应的运算符也是,简单的运算主要有常见的加减乘除等算数运算,另外还有一些比较运算符,如>,<等等。除此之外还有一些逻辑运算符:与或非,赋值类运算符以及三目运算符等等。
1.1 算数运算符
运算符 | 含义 |
---|---|
+ | 求和 |
- | 相减 |
* | 乘积 |
/ | 商 |
% | 求余数(取模) |
++ | 自加1 |
– | 自减1 |
注意:一个表达式当中有多个运算符,运算符有优先级,不确定的可以加小括号,优先级得到提升。
1.2 关系运算符
运算符 | 含义 |
---|---|
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
== | 等于 |
!= | 不等于 |
注意:关系运算符的运算结果一定是布尔类型:true/false。
1.3 逻辑运算符
运算符 | 含义 | 运算结果 |
---|---|---|
& | 逻辑与 | 两边的算子都是true,结果才是true |
| | 逻辑或 | 两边的算子只要有一个是true,结果就是true |
! | 逻辑非 | 取反,! true 就是false,! false就是true,单目运算符 |
^ | 逻辑异或 | 两边的算子只要不一样,结果就是true |
&& | 短路与 | 同逻辑与 |
|| | 短路或 | 同逻辑或 |
注意:
- 逻辑运算符运算两边的算子都是布尔类型,并且逻辑运算符最终的运算结果也是布尔类型。
- 短路与和逻辑与最终的运算结果是相同的,只不过短路与存在短路现象。
- 短路或与逻辑或最终的运算结果是相同的,只不过短路或存在短路现象。
短路的意思就是:如果根据运算符的左边的算子就已经知道整个表达式的结果了,那么右边的算子就不需要再执行了,而直接给出运算结果。
从某个角度看,短路更智能,由于后面的表达式可能不执行,所以执行效率更高。这种方式在实际的开发中使用更多。短路与比逻辑与使用的多,短路更常用。
但是,在某些特殊的业务逻辑当中,要求运算符两边的算子必须全部执行,此时必须使用逻辑与,不能使用短路与,使用短路与可能导致右边的表达式不执行。
1.4 赋值类运算符
运算符 | 含义 |
---|---|
= | 赋值 |
+= | 左侧算子等于自身加上右侧算子 |
-= | 左侧算子等于自身减去右侧算子 |
*= | 左侧算子等于自身乘右侧算子 |
/= | 左侧算子等于自身除右侧算子 |
%= | 左侧算子等于自身对右侧算子取余 |
注意:赋值类的运算符优先级:先执行等号右边的表达式,将执行结果赋值给左边的变量。除了第一个基本的赋值运算符,剩下的扩展赋值符在运算结果上和表中的“含义”是一样的,但是会自动类型转换。换句话说,扩展类的赋值运算符不改变左侧算子的类型(如果右侧的算子结果类型和左侧的不一样,则会自动强制类型转换)。如下所示:
1 | byte b = 10; |
1.5 字符串连接运算符
字符串是引用数据类型,语法:
String s = "Hello world!";
,
字符串连接运算符主要是采用“+”运算符来实现。
关于Java中的“+”运算符:
- “+”运算符在Java语言当中有两个作用:
- 加法运算,求和;
- 字符串的连接运算;
- 当“+”运算符两边的数据都是数字的话,一定是进行加法运算。
- 当“+”运算符两边的数据只要有一个数据是字符串,一定会进行字符串连接运算。并且,连接运算之后的结果还是一个字符串类型。(默认将另一个非字符串型数据强制转换成字符串型数据,直接拼接)。
1.6 条件运算符
条件运算符也叫三元运算符/三目运算符。
语法规则:
布尔表达式 ? 表达式1 : 表达式2
执行原理:
当布尔表达式的结果是true的时候,选择表达式1作为整个表达式的执行结果;当布尔表达式的结果是false的时候,选择表达式2作为整个表达式的执行结果。
2. 例子
1 | public class Example{ |
3. 备注
参考B站《动力节点》。