Java基本语法_03_运算符


程序是对数据的处理,前面介绍了数据类型以及变量等相关知识,接下来介绍对数据的处理,简而言之就是对数据的运算,运算需要用运算符表明。

1. 运算符

数据之间的运算除了基本的加减乘除之外,还有一些“高级运算”。对应的运算符也是,简单的运算主要有常见的加减乘除等算数运算,另外还有一些比较运算符,如>,<等等。除此之外还有一些逻辑运算符:与或非,赋值类运算符以及三目运算符等等。

1.1 算数运算符

运算符 含义
+ 求和
- 相减
* 乘积
/
% 求余数(取模)
++ 自加1
自减1

注意:一个表达式当中有多个运算符,运算符有优先级,不确定的可以加小括号,优先级得到提升。

1.2 关系运算符

运算符 含义
> 大于
>= 大于等于
< 小于
<= 小于等于
== 等于
!= 不等于

注意:关系运算符的运算结果一定是布尔类型:true/false。

1.3 逻辑运算符

运算符 含义 运算结果
& 逻辑与 两边的算子都是true,结果才是true
| 逻辑或 两边的算子只要有一个是true,结果就是true
! 逻辑非 取反,! true 就是false,! false就是true,单目运算符
^ 逻辑异或 两边的算子只要不一样,结果就是true
&& 短路与 同逻辑与
|| 短路或 同逻辑或

注意:

  1. 逻辑运算符运算两边的算子都是布尔类型,并且逻辑运算符最终的运算结果也是布尔类型
  2. 短路与和逻辑与最终的运算结果是相同的,只不过短路与存在短路现象。
  3. 短路或与逻辑或最终的运算结果是相同的,只不过短路或存在短路现象。

短路的意思就是:如果根据运算符的左边的算子就已经知道整个表达式的结果了,那么右边的算子就不需要再执行了,而直接给出运算结果

从某个角度看,短路更智能,由于后面的表达式可能不执行,所以执行效率更高。这种方式在实际的开发中使用更多。短路与比逻辑与使用的多,短路更常用。

但是,在某些特殊的业务逻辑当中,要求运算符两边的算子必须全部执行,此时必须使用逻辑与,不能使用短路与,使用短路与可能导致右边的表达式不执行。

1.4 赋值类运算符

运算符 含义
= 赋值
+= 左侧算子等于自身加上右侧算子
-= 左侧算子等于自身减去右侧算子
*= 左侧算子等于自身乘右侧算子
/= 左侧算子等于自身除右侧算子
%= 左侧算子等于自身对右侧算子取余

注意:赋值类的运算符优先级:先执行等号右边的表达式,将执行结果赋值给左边的变量。除了第一个基本的赋值运算符,剩下的扩展赋值符在运算结果上和表中的“含义”是一样的,但是会自动类型转换。换句话说,扩展类的赋值运算符不改变左侧算子的类型(如果右侧的算子结果类型和左侧的不一样,则会自动强制类型转换)。如下所示:

1
2
3
byte b = 10;
b = b + 5; // 报错,因为没有强转
b += 5; // 可以,没有报错,此时等同于 b = (byte)(b + 5);

1.5 字符串连接运算符

字符串是引用数据类型,语法:String s = "Hello world!";

字符串连接运算符主要是采用“+”运算符来实现。

关于Java中的“+”运算符:

  1. “+”运算符在Java语言当中有两个作用:
    1. 加法运算,求和;
    2. 字符串的连接运算;
  2. 当“+”运算符两边的数据都是数字的话,一定是进行加法运算。
  3. 当“+”运算符两边的数据只要有一个数据是字符串,一定会进行字符串连接运算。并且,连接运算之后的结果还是一个字符串类型。(默认将另一个非字符串型数据强制转换成字符串型数据,直接拼接)。

1.6 条件运算符

条件运算符也叫三元运算符/三目运算符。

  1. 语法规则:

    布尔表达式 ? 表达式1 : 表达式2

  2. 执行原理:

    当布尔表达式的结果是true的时候,选择表达式1作为整个表达式的执行结果;当布尔表达式的结果是false的时候,选择表达式2作为整个表达式的执行结果。

2. 例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class Example{

public static void main(String[] args){

int a = 10, b = 20, c;
c = a + b;
System.out.println(c);

c += 5;
System.out.println(c);

boolean d, e, f;
d = a > b;
e = c > b;
f = d & e;
System.out.println(f);

String s = "Hello world!";
String ss = s + a;
System.out.println(ss);

c = a > b ? a : b;
System.out.println(c);
}
}

3. 备注

参考B站《动力节点》。


文章作者: 浮云
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 浮云 !
  目录