您的位置:首页 > 编程语言 > Java开发

Java运算符优先级

2015-09-15 10:35 393 查看
Java运算符优先级
序列号符号名称结合性(与操作数)目数说明
1.从左到右双目
()圆括号从左到右
[]方括号从左到右
2+正号从右到左单目
-负号从右到左单目
++自增从右到左单目前缀增,后缀增
--自减从右到左前缀减,后缀减
~按位非/取补运算从右到左单目
逻辑非从右到左单目!”不可以与“=”联用
3*从左到右双目
/从左到右双目整数除法:取商的整数部分,小数部分去掉,不四舍五入
%取余从左到右双目
4+从左到右双目
-从左到右双目
5<<左移位运算符从左到右双目
>>带符号右移位运算符从左到右双目
>>>无符号右移从左到右双目
6<小于从左到右双目关系运算符“大于”说明
<=小于或等于从左到右双目
>大于从左到右双目
>=大于或等于从左到右双目
instanceof确定某对象是否属于指定的类从左到右双目
7==等于从左到右双目关系运算符“==”说明
!=不等于从左到右双目
8&按位与从左到右双目
9|按位或从左到右双目
10^按位异或从左到右双目
11&&短路与从左到右双目
12||短路或从左到右双目
13?:条件运算符从右到左三目
14=赋值运算符从右到左双目
+=混合赋值运算符
-=
*=
/=
%=
&=
|=
^=
<<=
>>=
>>>=
说明:
  1、算数运算符
    +:加法
    -:减法
    *:乘法
    /:除法
    %:取余运算
  2、关系运算符
    <:只能比较基本类型数据之间的关系,不能比较对象之间的关系。
    >:(同关系运算符“<”)
    <=:(同关系运算符“<”)
    >=:(同关系运算符“<”)
    ==:若使用该运算符比较两个对象的引用(变量),则实质上是比较两个变量是否引用了相同的对象。所谓相同的对象是指,是否是在堆栈(Heap)中开辟的同一块儿内存单元中存放的对象。
  若比较两个对象的引用(变量)所引用的对象的内容是否相同,则应该使用equals()方法,该方法的返回值类型是布尔值。需要注意的是:若用类库中的类创建对象,则对象的引用调用equals()方法比较的是对象的内容;若用自定义的类来创建对象,则对象的引用调用equals()方法比较的是两个引用是否引用了同一个对象,因为第二种情况equals()方法默认的是比较引用。
    !=:(同关系运算符“==”)
  3、逻辑运算符(操作符只能是布尔类型的)
    &&
    ||
    !
publicclassDemo{
publicstaticvoidmain(String[]args){
//System.out.println((!'1'||'1')+5);//编译错误
//System.out.println(!5);//编译错误
//System.out.println(('1'||'1')+5);//编译错误
//System.out.println(1||2);//编译错误
//System.out.println(5-3||4-2);//编译错误
System.out.println(5<3||4>3);//true
}
}

[/code]
 4、位运算符
    &
    |
    ^
    !:不可以与=联用,因为!是一元操作符;不可以对布尔类型的数据进行按位非运算
  5、移位运算符(只能处理整数运算符)
  Char、byte、short类型,在进行移位之前,都将被转换成int类型,移位后的结果也是int类型;移位符号右边的操作数只截取其二进制的后5位(目的是防止因为移位操作而超出int类型的表示范围:2的5次方是32,int类型的最大范围是32位);对long类型进行移位,结果仍然是long类型,移位符号右边的操作符只截取其二进制的后6位。
  <<:
  >>:若符号位为正,则在最高位插入0;若符号位为负,则在最高位插入1
  >>>:无论正负,都在最高位插入0
publicclassDemo{
publicstaticvoidmain(String[]args){
//0000000000000101
//0000000000000010
System.out.println(5>>1);//2
//0000000000001000
//0000000000000100
System.out.println(8>>1);//4
System.out.println(3+5>>1);//4
System.out.println(3+(5>>1));//5
}
}

[/code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: