【转】Java运算符优先级

原文网址:http://www.cnblogs.com/gw811/archive/2012/10/13/2722752.html

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);//4
10         System.out.println(3+(5>>1));//5
11     }
12 }

时间: 2024-10-23 09:33:17

【转】Java运算符优先级的相关文章

Java运算符优先级(转)

Java运算符优先级 序列号 符号 名称 结合性(与操作数) 目数 说明 1 . 点 从左到右 双目   ( ) 圆括号 从左到右     [ ] 方括号 从左到右     2 + 正号 从右到左 单目   - 负号 从右到左 单目   ++ 自增 从右到左 单目 前缀增,后缀增 - - 自减 从右到左 前缀减,后缀减 ~ 按位非/取补运算 从右到左 单目   ! 逻辑非 从右到左 单目 “!”不可以与“=”联用 3 * 乘 从左到右 双目   / 除 从左到右 双目 整数除法:取商的整数部分,

Java 运算符优先级

运算符 结合性 [ ] . ( ) (方法调用) 从左向右 ! ~ ++ -- +(一元运算) -(一元运算)  从右向左 * / % 从左向右 + - 从左向右 << >> >>> 从左向右 < <= > >= instanceof 从左向右 == != 从左向右 & 从左向右 ^ 从左向右 | 从左向右 && 从左向右 || 从左向右 ?: 从右向左 = += -= *= /= %= &= |= ^= &

Java运算符优先级

序列号 符号 名称 结合性(与操作数) 目数 说明 1 . 点 从左到右 双目 ( ) 圆括号 从左到右   [ ] 方括号 从左到右   2 + 正号 从右到左 单目 - 负号 从右到左 单目 ++ 自增 从右到左 单目 前缀增,后缀增 - - 自减 从右到左 前缀减,后缀减 ~ 按位非/取补运算 从右到左 单目 ! 逻辑非 从右到左 单目 "!"不可以与"="联用 3 * 乘 从左到右 双目 / 除 从左到右 双目 整数除法:取商的整数部分,小数部分去掉,不四舍

【Java基础】Java运算符优先级

序列号 符号 名称 结合性(与操作数) 目数 说明 1 . 点 从左到右 双目 ( ) 圆括号 从左到右   [ ] 方括号 从左到右   2 + 正号 从右到左 单目 - 负号 从右到左 单目 ++ 自增 从右到左 单目 前缀增,后缀增 - - 自减 从右到左 前缀减,后缀减 ~ 按位非/取补运算 从右到左 单目 ! 逻辑非 从右到左 单目 “!”不可以与“=”联用 3 * 乘 从左到右 双目 / 除 从左到右 双目 整数除法:取商的整数部分,小数部分去掉,不四舍五入 % 取余 从左到右 双目

java运算符优先级记忆口诀

单目乘除为关系,逻辑三目后赋值. 单目:单目运算符+ –(负数) ++ -- 等 乘除:算数单目运算符* / % + - 为:位移单目运算符<< >> 关系:关系单目运算符> < >= <= == != 逻辑:逻辑单目运算符&& || & | ^ 三目:三目单目运算符A > B ? X : Y 后:无意义,仅仅为了凑字数 赋值:赋值= 原文地址:https://www.cnblogs.com/-wanglei/p/1037061

[转]Java 运算符的优先级

Java 运算符的优先级(从高到低) 优先级 描述 运算符 1 括号 ().[] 2 正负号 +.- 3 自增自减,非 ++.--.! 4 乘除,取余 *./.% 5 加减 +.- 6 移位运算 <<.>>.>>> 7 大小关系 >.>=.<.<= 8 相等关系 ==.!= 9 按位与 & 10 按位异或 ^ 11 按位或 | 12 逻辑与 && 13 逻辑或 || 14 条件运算 ?: 15 赋值运算 =.+=.-

10.Java运算符的优先级

当多个运算符出现在一个表达式中,谁先谁后呢?这就涉及到运算符的优先级别的问题.在一个多运算符的表达式中,运 算符优先级不同会导致最后得出的结果差别甚大,例如,(1+3)+(3+2)*2,这个表达式如果按加号最优先计算,答案就是 18,如果按照乘号最优先,答案则是 14.下面将详细介绍在 Java 程序设计中,各个运算符的优先级别,如下列表格所示. 运算符优先级表 运算符 优先级 括号 1 ++,-- 2 ~,! 3 *,/,% 4 +,- 5 >>,<<,>>>

Java运算符及优先级(全)

运算符是一种特殊的符号,用以表示数据的运算.赋值和比较等. Java运算符分为以下几种: • 算术运算符:+,-,*,/,%,++,-- • 赋值运算符:= • 扩展后的赋值运算符:+=,-=,*=,/=,%=,&=,|=,^=,<<=,>>=,>>>= • 位运算符:&,|,~,^,<<,>>,>>> • 比较运算符:>,>=,<,<=,== • 逻辑运算符:&&,

java中运算符优先级

首先不需要专门记忆,也没有必要.因为作为初学者,哪个优先级高.哪个优先级低我们很难记住.就算死记硬背记住了,时间长不用也会忘记.所以当一个表达式中有多个运算符时,如果不知道哪个优先级高哪个优先级低就查一下优先级表,附录E有一个运算符优先级表.此外用的时间长了自然而然就记住了,这样记才会记得深刻. 而且事实上在编程的时候也不需要考虑优先级的问题.因为如果不知道优先级高低的话,加一个括号就可以了,因为括号( )的优先级是最高的.比如前面的程序中: k = (j>i) && (8==i);