1、什么是运算符和表达式
运算符:运算符就是一种告诉编译器执行特定的数学或逻辑操作的符号,用来表示针对数据的特定操作,也称之为操作符。
表达式:在Java中,表达式(expression)是由操作数(operands)和操作符(operators)组成的一组代码,用于进行计算、执行操作或生成值。表达式可以包括变量、常量、方法调用、运算符和其他表达式的组合。
在Java编程语言中,表达式是一种基本组成单位,它是由变量、常量、运算符和方法调用组成的结构。例如,以下的"age>20"就是一个简单表达式,其中"age"和"20"是操作数,">"是运算符。
2、运算符分类
运算符类别 | 运算符符号 | 含义 |
运算符类别 | + | 加法 |
- | 减法 | |
* | 乘法 | |
/ | 除法(有浮点数结果) | |
% | 取模(求余数) | |
++ | 自增(后置递增) | |
-- | 自减(后置递减) | |
++i | 自增(前置递增) | |
--i | 自减(前置递减) | |
关系运算符 | == | 等于 |
== | 等于 | |
!= | 不等于 | |
> | 大于 | |
< | 小于 | |
>= | 大于等于 | |
<= | 小于等于 | |
逻辑运算符 | && | 与(逻辑与) |
|| | 或(逻辑或) | |
! | 非(逻辑非) | |
位运算符 | & | 按位与 |
& | 按位与 | |
| | 按位或 | |
^ | 按位异或 | |
~ | 按位取反 | |
<< | 左移 | |
>> | 右移 | |
赋值运算符 | = | 赋值 |
+= | 加法赋值 | |
-= | 减法赋值 | |
*= | 乘法赋值 | |
/= | 除法赋值 | |
%= | 取模赋值 | |
&= | 按位与赋值 | |
|= | 按位或赋值 | |
^= | 按位异或赋值 | |
<<= | 左移赋值 | |
>>= | 右移赋值 | |
条件运算符 | ?: | 三元条件运算符,格式为:条件表达式 ? 表达式1 : 表达式2 |
条件运算符 | . | 访问对象的成员变量或方法 |
() | 调用对象的方法 | |
条件运算符 | [] | 访问数组元素 |
.length | 获取数组长度 | |
new | 创建数组实例 |
3、运算符优先级
在Java编程语言中,运算符的优先级是指在一个包含多个运算符的表达式中,哪些运算符会先执行,哪些运算符会后执行。 这种优先级共分为14级,其中1级最高,14级最低。
- 以下是Java中各类运算符的优先级(从高到低):
- 括号:拥有最高的优先级
- 一元操作符:如取反符号!
- 乘法、除法和取模运算符
- 加法和减法运算符
- 位移运算符
- 关系运算符:如<=、<>、>=、<=等
- 等于运算符:如==、!=等
- 逻辑运算符:&&、||、!等
- 条件运算符(?:)
例如,表达式"a+b*c"将根据运算符的优先级首先进行乘法运算,然后进行加法运算。而表达式"(a+b)*c"则先将括号内的加法运算完成,再进行乘法运算。
此外,使用优先级为1的小括号可以改变其他运算符的优先级。也就是说,如果需要将具有较低优先级的运算符先运算,则可以使用小括号将该运算符和操作数括起来。
然而,当多个运算符的优先级相同时,需要按照结合性的规则来确定它们的执行顺序。
4、表达式分类
表达式类别 | 描述 | 举例 |
---|---|---|
算术表达式 | 由变量、算术运算符和方法调用构成 | 如"(a + b) * 2" |
逻辑表达式 | 由关系或布尔运算符组成 | 如"c > b" |
条件表达式 | 使用了条件运算符 | 格式为:条件表达式 ? 表达式1 : 表达式2 |
Lambda表达式 | 允许把函数作为一个方法的参数,从而使代码更加简洁紧凑 | () -> System.out.println(“Hello World!”); |