Java运算符优先级
2017-05-29 18:52
232 查看
Java运算符优先级
说明:
1、算数运算符
+ :加法
- :减法
* :乘法
/ :除法
% :取余运算
2、关系运算符
< :只能比较基本类型数据之间的关系,不能比较对象之间的关系。
> : (同关系运算符“<”)
<=: (同关系运算符“<”)
>=: (同关系运算符“<”)
== :若使用该运算符比较两个对象的引用(变量),则实质上是比较两个变量是否引用了相同的对象。所谓相同的对象是指,是否是在堆栈(Heap)中开辟的同一块儿内存单元中存放的对象。
若比较两个对象的引用(变量)所引用的对象的内容是否相同,则应该使用equals()方法,该方法的返回值类型是布尔值。需要注意的是:若用类库中的类创建对象,则对象的引用调用equals()方法比较的是对象的内容;若用自定义的类来创建对象,则对象的引用调用equals()方法比较的是两个引用是否引用了同一个对象,因为第二种情况equals()方法默认的是比较引用。
!= :(同关系运算符“==”)
3、逻辑运算符 (操作符只能是布尔类型的)
&&
||
!
4、位运算符
&
|
^
! :不可以与=联用,因为!是一元操作符;不可以对布尔类型的数据进行按位非运算
5、移位运算符(只能处理整数运算符)
Char、byte、short类型,在进行移位之前,都将被转换成int类型,移位后的结果也是int类型;移位符号右边的操作数只截取其二进制的后5位(目的是防止因为移位操作而超出int类型的表示范围:2的5次方是32,int类型的最大范围是32位);对long类型进行移位,结果仍然是long类型,移位符号右边的操作符只截取其二进制的后6位。
<< :
>> :若符号位为正,则在最高位插入0;若符号位为负,则在最高位插入1
>>> :无论正负,都在最高位插入0
Java运算符优先级
说明:
1、算数运算符
+ :加法
- :减法
* :乘法
/ :除法
% :取余运算
2、关系运算符
< :只能比较基本类型数据之间的关系,不能比较对象之间的关系。
> : (同关系运算符“<”)
<=: (同关系运算符“<”)
>=: (同关系运算符“<”)
== :若使用该运算符比较两个对象的引用(变量),则实质上是比较两个变量是否引用了相同的对象。所谓相同的对象是指,是否是在堆栈(Heap)中开辟的同一块儿内存单元中存放的对象。
若比较两个对象的引用(变量)所引用的对象的内容是否相同,则应该使用equals()方法,该方法的返回值类型是布尔值。需要注意的是:若用类库中的类创建对象,则对象的引用调用equals()方法比较的是对象的内容;若用自定义的类来创建对象,则对象的引用调用equals()方法比较的是两个引用是否引用了同一个对象,因为第二种情况equals()方法默认的是比较引用。
!= :(同关系运算符“==”)
3、逻辑运算符 (操作符只能是布尔类型的)
&&
||
!
4、位运算符
&
|
^
! :不可以与=联用,因为!是一元操作符;不可以对布尔类型的数据进行按位非运算
5、移位运算符(只能处理整数运算符)
Char、byte、short类型,在进行移位之前,都将被转换成int类型,移位后的结果也是int类型;移位符号右边的操作数只截取其二进制的后5位(目的是防止因为移位操作而超出int类型的表示范围:2的5次方是32,int类型的最大范围是32位);对long类型进行移位,结果仍然是long类型,移位符号右边的操作符只截取其二进制的后6位。
<< :
>> :若符号位为正,则在最高位插入0;若符号位为负,则在最高位插入1
>>> :无论正负,都在最高位插入0
序列号 | 符号 | 名称 | 结合性(与操作数) | 目数 | 说明 |
1 | . | 点 | 从左到右 | 双目 | |
( ) | 圆括号 | 从左到右 | | | |
[ ] | 方括号 | 从左到右 | | | |
2 | + | 正号 | 从右到左 | 单目 | |
- | 负号 | 从右到左 | 单目 | | |
++ | 自增 | 从右到左 | 单目 | 前缀增,后缀增 | |
- - | 自减 | 从右到左 | 前缀减,后缀减 | ||
~ | 按位非/取补运算 | 从右到左 | 单目 | | |
! | 逻辑非 | 从右到左 | 单目 | “!”不可以与“=”联用 | |
3算数运算符 | * | 乘 | 从左到右 | 双目 | |
/ | 除 | 从左到右 | 双目 | 整数除法:取商的整数部分,小数部分去掉,不四舍五入 | |
% | 取余 | 从左到右 | 双目 | | |
4算数运算符 | + | 加 | 从左到右 | 双目 | |
- | 减 | 从左到右 | 双目 | | |
5 | << | 左移位运算符 | 从左到右 | 双目 | |
>> | 带符号右移位运算符 | 从左到右 | 双目 | | |
>>> | 无符号右移 | 从左到右 | 双目 | | |
6关系运算符 | < | 小于 | 从左到右 | 双目 | 关系运算符“大于”说明 |
<= | 小于或等于 | 从左到右 | 双目 | | |
> | 大于 | 从左到右 | 双目 | | |
>= | 大于或等于 | 从左到右 | 双目 | | |
instanceof | 确定某对象是否属于指定的类 | 从左到右 | 双目 | | |
7 | == | 等于 | 从左到右 | 双目 | 关系运算符“==”说明 |
!= | 不等于 | 从左到右 | 双目 | | |
8 | & | 按位与 | 从左到右 | 双目 | |
9 | | | 按位或 | 从左到右 | 双目 | |
10 | ^ | 按位异或 | 从左到右 | 双目 | |
11 | && | 短路与 | 从左到右 | 双目 | |
12 | || | 短路或 | 从左到右 | 双目 | |
13 | ? : | 条件运算符 | 从右到左 | 三目 | |
14 | = | 赋值运算符 | 从右到左 | 双目 | |
+= | 混合赋值运算符 | | |||
-= | | ||||
*= | | ||||
/= | | ||||
%= | | ||||
&= | | ||||
|= | | ||||
^= | | ||||
<<= | | ||||
>>= | | ||||
>>>= | |
说明:
1、算数运算符
+ :加法
- :减法
* :乘法
/ :除法
% :取余运算
2、关系运算符
< :只能比较基本类型数据之间的关系,不能比较对象之间的关系。
> : (同关系运算符“<”)
<=: (同关系运算符“<”)
>=: (同关系运算符“<”)
== :若使用该运算符比较两个对象的引用(变量),则实质上是比较两个变量是否引用了相同的对象。所谓相同的对象是指,是否是在堆栈(Heap)中开辟的同一块儿内存单元中存放的对象。
若比较两个对象的引用(变量)所引用的对象的内容是否相同,则应该使用equals()方法,该方法的返回值类型是布尔值。需要注意的是:若用类库中的类创建对象,则对象的引用调用equals()方法比较的是对象的内容;若用自定义的类来创建对象,则对象的引用调用equals()方法比较的是两个引用是否引用了同一个对象,因为第二种情况equals()方法默认的是比较引用。
!= :(同关系运算符“==”)
3、逻辑运算符 (操作符只能是布尔类型的)
&&
||
!
1 public class Demo { 2 public static void main(String[] args) { 3 // System.out.println((!'1'||'1')+5);//编译错误 4 // System.out.println(!5);//编译错误 5 // System.out.println(('1'||'1')+5);//编译错误 6 // System.out.println(1||2);//编译错误 7 // System.out.println(5-3||4-2);//编译错误 8 System.out.println(5<3||4>3);//true 9 } 10 }
4、位运算符
&
|
^
! :不可以与=联用,因为!是一元操作符;不可以对布尔类型的数据进行按位非运算
5、移位运算符(只能处理整数运算符)
Char、byte、short类型,在进行移位之前,都将被转换成int类型,移位后的结果也是int类型;移位符号右边的操作数只截取其二进制的后5位(目的是防止因为移位操作而超出int类型的表示范围:2的5次方是32,int类型的最大范围是32位);对long类型进行移位,结果仍然是long类型,移位符号右边的操作符只截取其二进制的后6位。
<< :
>> :若符号位为正,则在最高位插入0;若符号位为负,则在最高位插入1
>>> :无论正负,都在最高位插入0
1 public class Demo { 2 public static void main(String[] args) { 3 // 0000 0000 0000 0101 4 // 0000 0000 0000 0010 5 System.out.println(5>>1);//2 6 // 0000 0000 0000 1000 7 // 0000 0000 0000 0100 8 System.out.println(8>>1);//4 9 System.out.println(3+5>>1);//410 System.out.println(3+(5>>1));//511 } 12 }
Java运算符优先级
序列号 | 符号 | 名称 | 结合性(与操作数) | 目数 | 说明 |
1 | . | 点 | 从左到右 | 双目 | |
( ) | 圆括号 | 从左到右 | | | |
[ ] | 方括号 | 从左到右 | | | |
2 | + | 正号 | 从右到左 | 单目 | |
- | 负号 | 从右到左 | 单目 | | |
++ | 自增 | 从右到左 | 单目 | 前缀增,后缀增 | |
- - | 自减 | 从右到左 | 前缀减,后缀减 | ||
~ | 按位非/取补运算 | 从右到左 | 单目 | | |
! | 逻辑非 | 从右到左 | 单目 | “!”不可以与“=”联用 | |
3算数运算符 | * | 乘 | 从左到右 | 双目 | |
/ | 除 | 从左到右 | 双目 | 整数除法:取商的整数部分,小数部分去掉,不四舍五入 | |
% | 取余 | 从左到右 | 双目 | | |
4算数运算符 | + | 加 | 从左到右 | 双目 | |
- | 减 | 从左到右 | 双目 | | |
5 | << | 左移位运算符 | 从左到右 | 双目 | |
>> | 带符号右移位运算符 | 从左到右 | 双目 | | |
>>> | 无符号右移 | 从左到右 | 双目 | | |
6关系运算符 | < | 小于 | 从左到右 | 双目 | 关系运算符“大于”说明 |
<= | 小于或等于 | 从左到右 | 双目 | | |
> | 大于 | 从左到右 | 双目 | | |
>= | 大于或等于 | 从左到右 | 双目 | | |
instanceof | 确定某对象是否属于指定的类 | 从左到右 | 双目 | | |
7 | == | 等于 | 从左到右 | 双目 | 关系运算符“==”说明 |
!= | 不等于 | 从左到右 | 双目 | | |
8 | & | 按位与 | 从左到右 | 双目 | |
9 | | | 按位或 | 从左到右 | 双目 | |
10 | ^ | 按位异或 | 从左到右 | 双目 | |
11 | && | 短路与 | 从左到右 | 双目 | |
12 | || | 短路或 | 从左到右 | 双目 | |
13 | ? : | 条件运算符 | 从右到左 | 三目 | |
14 | = | 赋值运算符 | 从右到左 | 双目 | |
+= | 混合赋值运算符 | | |||
-= | | ||||
*= | | ||||
/= | | ||||
%= | | ||||
&= | | ||||
|= | | ||||
^= | | ||||
<<= | | ||||
>>= | | ||||
>>>= | |
说明:
1、算数运算符
+ :加法
- :减法
* :乘法
/ :除法
% :取余运算
2、关系运算符
< :只能比较基本类型数据之间的关系,不能比较对象之间的关系。
> : (同关系运算符“<”)
<=: (同关系运算符“<”)
>=: (同关系运算符“<”)
== :若使用该运算符比较两个对象的引用(变量),则实质上是比较两个变量是否引用了相同的对象。所谓相同的对象是指,是否是在堆栈(Heap)中开辟的同一块儿内存单元中存放的对象。
若比较两个对象的引用(变量)所引用的对象的内容是否相同,则应该使用equals()方法,该方法的返回值类型是布尔值。需要注意的是:若用类库中的类创建对象,则对象的引用调用equals()方法比较的是对象的内容;若用自定义的类来创建对象,则对象的引用调用equals()方法比较的是两个引用是否引用了同一个对象,因为第二种情况equals()方法默认的是比较引用。
!= :(同关系运算符“==”)
3、逻辑运算符 (操作符只能是布尔类型的)
&&
||
!
1 public class Demo { 2 public static void main(String[] args) { 3 // System.out.println((!'1'||'1')+5);//编译错误 4 // System.out.println(!5);//编译错误 5 // System.out.println(('1'||'1')+5);//编译错误 6 // System.out.println(1||2);//编译错误 7 // System.out.println(5-3||4-2);//编译错误 8 System.out.println(5<3||4>3);//true 9 } 10 }
4、位运算符
&
|
^
! :不可以与=联用,因为!是一元操作符;不可以对布尔类型的数据进行按位非运算
5、移位运算符(只能处理整数运算符)
Char、byte、short类型,在进行移位之前,都将被转换成int类型,移位后的结果也是int类型;移位符号右边的操作数只截取其二进制的后5位(目的是防止因为移位操作而超出int类型的表示范围:2的5次方是32,int类型的最大范围是32位);对long类型进行移位,结果仍然是long类型,移位符号右边的操作符只截取其二进制的后6位。
<< :
>> :若符号位为正,则在最高位插入0;若符号位为负,则在最高位插入1
>>> :无论正负,都在最高位插入0
1 public class Demo { 2 public static void main(String[] args) { 3 // 0000 0000 0000 0101 4 // 0000 0000 0000 0010 5 System.out.println(5>>1);//2 6 // 0000 0000 0000 1000 7 // 0000 0000 0000 0100 8 System.out.println(8>>1);//4 9 System.out.println(3+5>>1);//410 System.out.println(3+(5>>1));//511 } 12 }
相关文章推荐
- [Java]运算符优先级参考图表
- Java 运算符优先级
- JAVA的各种运算符,优先级与结合性
- Java 运算符优先级
- Java 运算符优先级
- java 运算符优先级
- java中运算符优先级的梳理
- java运算符的结合性和优先级
- Java运算符优先级
- java 运算符的优先级
- Java运算符和优先级
- JAVA 的运算符及其优先级
- Java运算符优先级
- java基础——运算符和运算符的优先级
- Java运算符及其优先级
- 第2章 Java编程基础——FAQ2.15 Java中有哪些运算符?优先级如何?
- java运算符优先级
- JAVA运算符优先级
- java运算符的优先级和详解
- JAVA运算符的优先级与结合性