java 运算符 运行顺序


优先级 运算符分类 结合顺序 运算符

分隔符 左结合 .    []     ( )     ;      ,
一元运算符 右结合 !  ++     --     -   ~

算术运算符

移位运算符

左结合 *     /      %    +     -      <<   >>   >>>
关系运算符 左结合 <     >     <=   >=   instanceof(Java 特有)   = =  !=
逻辑运算符 左结合 ! &&  ||  ~  &  |  ^ 
三目运算符 右结合 布尔表达式?表达式1:表达式2
赋值运算符 右结合 =  *=     /=  %=   +=   -=    <<= >>= >>>=  &=  *=  |=

 

一、一元运算符

    因操作数是一个,故称为一元运算符。

运算符 含义 例子
- 改变数值的符号,取反 -x(-1*x)
~ 逐位取反,属于位运算符 ~x
++ 自加1 x++
-- 自减1 x--

++x 因为++在前,所以先加后用。
x++ 因为++在后,所以先用后加。

二、算术运算符

    所谓算术运算符,就是数学中的加、减、乘、除等运算。因算术运算符是运算两个操作符,故又称为二元运算符。

运算符 含义 例子
+ 加法运算 x+y
- 减法运算 x-y
* 乘法运算 x*y
/ 除法运算 x/y
% 取模运算(求余运算) x%y

    这些操作可以对不同类型的数字进行混合运算,为了保证操作的精度,系统在运算过程中会做相应的转化。数字精度的问题,我们在这里不再讨论。下图中展示了运算过程中,数据自动向上造型的原则。

 

 

    注:1、实线箭头表示没有信息丢失的转换,也就是安全性的转换,虚线的箭头表示有精度损失的转化,也就是不安全的。
      2、当两个操作数类型不相同时,操作数在运算前会子松向上造型成相同的类型,再进行运算。

示例如下:


三、移位运算符

   移位运算符操作的对象就是二进制的位,可以单独用移位运算符来处理int型整数。

运算符 含义 例子
<< 左移运算符,将运算符左边的对象向左移动运算符右边指定的位数(在低位补0) x<<3
>> "有符号"右移运算 符,将运算符左边的对象向右移动运算符右边指定的位数。使用符号扩展机制,也就是说,如果值为正,则在高位补0,如果值为负,则在高位补1. x>>3
>>> "无符号"右移运算 符,将运算符左边的对象向右移动运算符右边指定的位数。采用0扩展机制,也就是说,无论值的正负,都在高位补0. x>>>3

 

四、关系运算符

Java具有完备的关系运算符,这些关系运算符同数学中的关系运算符是一致的。具体说明如下:

运算符 含义 例子
< 小于 x
> 大于 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<
&= x&=y x=x&y
|= x|=y x=x|y
^= x^=y x=x^y

你可能感兴趣的:(java)