跳到主要内容

9. 运算符

赋值运算符

赋值运算符使用的是等于号=,在赋值操作中,它是赋值符号

在为变量赋值时,会把赋值符号 = 右侧表达式的值赋值给左侧的变量。

public static void main(String[] args) {
int a = 10;
}

算术运算符

基本的算术运算符:

运算符+-*/%
说明取余

语法糖

运算符+=-=*=/=%=
说明加等减等乘等除等取余等

示例:

public static void main(String[] args) {
int a = 1;
a += 1; // 相当于 a = a + 1;
}

提示

a += 1 和 a = a + 1 并不完全等价,在数据类型那一讲提到过,+= 在涉及到强制类型转换(窄化处理)时,编译器会自动进行强制类型转换;而 a = a + 1 这种需要显式地进行强制类型转换。

自增、自减运算:

运算符说明
++自增运算,+1
--自减运算,-1

自增、自减运算符使用的注意事项:

  • 自增、自减运算符的优先级要高于其他算术运算符;
  • 自增、自减运算符放在变量左侧时,先执行自增、自减运算,再执行其它运算;
  • 自增、自减运算符放在变量右侧时,先执行其它运算,然后变量再自增、自减。

思考下下面这段代码的输出结果:

public static void main(String[] args) {
int a = 12;
int b = 45;
int c;

c = a + b--;

System.out.println("a的值:"+a);
System.out.println("b的值:"+b);
System.out.println("c的值:"+c);
}

关系运算符

也称为"比较运算符",用来比较变量、数值的关系。关系运算符的结果是布尔类型

关系运算符><>=<===!=
说明大于小于大于等于小于等于等于不等于

逻辑运算符

逻辑运算符用来判断多个条件要满足的关系,它的结果是布尔类型

逻辑运算符说明
&&运算符左右两边都为true时,结果为true,否则结果为false
||运算符左右两边都为false时,结果为false,否则结果为true
!取反

与运算符还可以是 &,它和 && 在使用上有稍许区别:

  • && ,叫做"短路与运算符",当它左侧的表达式为false时,将不会执行运算符右侧的表达式;
  • & ,即便运算符左侧为false,依然会执行右侧的表达式。

或运算也同上,有 ||| 两种:

  • || ,叫做"短路或运算符",当它左侧的表达式为true时,将不会执行运算符右侧的表达式;
  • | ,即便运算符左侧的true,依然会执行右侧的表达式。

三元运算符

假设这样一个场景,当满足一定条件时,返回一个值,否则就返回另一个值。像这种场景就可以使用三元运算符。

三元表达式的写法格式如下:

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

当问号 ? 前面的布尔表达式为 true 时,返回冒号 : 前面的表达式的值,否则返回冒号后面表达式的值。

public static void main(String[] args) {
int a = 12;
int b = 45;

int max = a > b ? a : b;
}