| 优先级 | 运算符分类 | 结合顺序 | 运算符 |
| 由 高 到 低 | 分隔符 | 左结合 | . [] ( ) ; , |
| 一元运算符 | 右结合 | ! ++ -- - ~ | |
| 算术运算符 移位运算符 | 左结合 | * / % + - << >> >>> | |
| 关系运算符 | 左结合 | < > <= >= instanceof(Java 特有) = = != | |
| 逻辑运算符 | 左结合 | ! && || ~ & | ^ | |
| 三目运算符 | 右结合 | 布尔表达式?表达式1:表达式2 | |
| 赋值运算符 | 右结合 | = *= /= %= += -= <<= >>= >>>= &= *= |= |
一、一元运算符
因操作数是一个,故称为一元运算符。
| 运算符 | 含义 | 例子 |
| - | 改变数值的符号,取反 | -x(-1*x) |
| ~ | 逐位取反,属于位运算符 | ~x |
| ++ | 自加1 | x++ |
| -- | 自减1 | x-- |
++x 因为++在前,所以先加后用。
x++ 因为++在后,所以先用后加。
二、算术运算符
所谓算术运算符,就是数学中的加、减、乘、除等运算。因算术运算符是运算两个操作符,故又称为二元运算符。
| 运算符 | 含义 | 例子 |
| + | 加法运算 | x+y |
| - | 减法运算 | x-y |
| * | 乘法运算 | x*y |
| / | 除法运算 | x/y |
| % | 取模运算(求余运算) | x%y |
三、移位运算符
移位运算符操作的对象就是二进制的位,可以单独用移位运算符来处理int型整数。
| 运算符 | 含义 | 例子 |
| << | 左移运算符,将运算符左边的对象向左移动运算符右边指定的位数(在低位补0) | x<<3 |
| >> | "有符号"右移运算 符,将运算符左边的对象向右移动运算符右边指定的位数。使用符号扩展机制,也就是说,如果值为正,则在高位补0,如果值为负,则在高位补1. | x>>3 |
| >>> | "无符号"右移运算 符,将运算符左边的对象向右移动运算符右边指定的位数。采用0扩展机制,也就是说,无论值的正负,都在高位补0. | x>>>3 |
四、关系运算符
Java具有完备的关系运算符,这些关系运算符同数学中的关系运算符是一致的。具体说明如下:
| 运算符 | 含义 | 例子 |
| < | 小于 | x<y |
| > | 大于 | x>y |
| <= | 小于等于 | x<=y |
| >= | 大于等于 | x>=y |
| == | 等于 | x==y |
| != | 不等于 | x!=y |
instanceof操作符用于判断一个引用类型所引用的对象是否是一个类的实例。操作符左边的操作元是一个引用类型,右边的操作元是一个类名或者接口,形式如下:
obj instanceof ClassName 或者 obj instanceof InterfaceName
关系运算符产生的结果都是布尔型的值,一般情况下,在逻辑与控制中会经常使用关系运算符,用于选择控制的分支,实现逻辑要求。
需要注意的是:关系运算符中的"=="和"!="既可以操作基本数据类型,也可以操作引用数据类型。操作引用数据类型时,比较的是引用的内存地址。所以在比较非基本数据类型时,应该使用equals方法。
七、赋值运算符
赋值运算符是程序中最常用的运算符了,示例如下:
| 运算符 | 例子 | 含义 |
| += | x+=y | x=x+y |
| -= | x-=y | x=x-y |
| *= | x*=y | x=x*y |
| /= | x/=y | x=x/y |
| %= | x%=y | x=x%y |
| >>= | x>>=y | x=x>>y |
| >>>= | a>>>=y | x=x>>>y |
| <<= | a<<=y | x=x<<y |
| &= | x&=y | x=x&y |
| |= | x|=y | x=x|y |
| ^= | x^=y | x=x^y |
本文详细介绍了Java中的各类运算符,包括优先级、结合顺序、一元运算符、算术运算符、移位运算符、关系运算符、逻辑运算符、三目运算符及赋值运算符,并解释了它们的具体用法。
16万+

被折叠的 条评论
为什么被折叠?



