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;
}