原文网址: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 }

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

  1. Java运算符优先级(转)

    转自:http://www.cnblogs.com/gw811/archive/2012/10/13/2722752.html Java运算符优先级 序列号 符号 名称 结合性(与操作数) 目数 说明 ...

  2. 【java基础】Java运算符优先级

    Java运算符优先级 序列号 符号 名称 结合性(与操作数) 目数 说明 1 . 点 从左到右 双目 ( ) 圆括号 从左到右   [ ] 方括号 从左到右   2 + 正号 从右到左 单目 - 负号 ...

  3. java运算符优先级记忆口诀

    尊重原创:(口诀)转自http://lasombra.iteye.com/blog/991662 今天看到<java编程思想>中的运算符优先级助记口诀,不过"Ulcer Addi ...

  4. java运算符优先级与流程控制

    1. Java 的方法Method (函数 Function), 功能, 动作 1) 方法就是函数: y=f(x)=3x+6; 2) 方法的语法   (修饰词)(返回值类型)(方法名)(参数列表){  ...

  5. 一、基础篇--1.1Java基础-Java运算符优先级

    在一个表达式中可能包含多个有不同运算符连接起来的.具有不同数据类型的数据对象:由于表达式有多种运算,不同的结合顺序可能得出不同结果甚至出现错误运算错误,因为当表达式中含多种运算时,必须按一定顺序进行结 ...

  6. java运算符优先级和结合性

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

  7. Java运算符优先级

    序列号 符号 名称 结合性(与操作数) 目数 说明 1 . 点 从左到右 双目 ( ) 圆括号 从左到右   [ ] 方括号 从左到右   2 + 正号 从右到左 单目 - 负号 从右到左 单目 ++ ...

  8. Java]运算符优先级

    https://blog.csdn.net/xiaoli_feng/article/details/4567184

  9. JAVA之运算符优先级

    Java运算符优先级从高到低 运算符 结合性 [ ] . ( ) (方法调用) 从左向右 ! ~ ++ -- +(一元运算) -(一元运算) 从右向左 * / % 从左向右 + - 从左向右 < ...

随机推荐

  1. mxnet运行时遇到问题及解决方法

    1.训练好模型之后,进行预测时出现这种错误: mxnet.::] src/ndarray/ndarray.cc:: Check failed: ,) to.shape=(,) 这种问题的解决方法,在全 ...

  2. dedecms 5.7文章编辑器附件上传图标不显示

    我最近发现在使用dedecms 5.7文章编辑器附件上传图标不显示了,以前是没有问题的,这个更新系统就出来问题了,下面我来给大家分享此问题解决办法.   问题bug:在dedecms 5.7中发现了一 ...

  3. Ant工具

    Ant工具 Ant是一种基于Java的build工具.理论上来说,它有些类似于(Unix)C中的make ,但没有make的缺陷.目前的最新版本为:Ant 1.9.4[1] .   Ant的概念 当一 ...

  4. 表达式:使用API创建表达式树(3)

    一.DebugInfoExpression:发出或清除调试信息的序列点. 这允许调试器在调试时突出显示正确的源代码. static void Main(string[] args) { var asm ...

  5. RegistryKey 类

    表示 Windows 注册表中的项级节点. 此类是注册表封装. 继承层次结构 System.Object   System.MarshalByRefObject    Microsoft.Win32. ...

  6. Building Local Unit Tests

    If your unit test has no dependencies or only has simple dependencies on Android, you should run you ...

  7. [原创] SQLite数据库使用清单(上)

    1. 介绍 1.1 安装 访问 SQLite 下载页面,从 Windows 区下载预编译的二进制文件. 您需要下载 sqlite-shell-win32-*.zip 和 sqlite-dll-win3 ...

  8. oracle行列转换总结-转载自ITPUB

    原贴地址:http://www.itpub.net/thread-1017026-1-1.html 谢谢原贴大人 最近论坛很多人提的问题都与行列转换有关系,所以我对行列转换的相关知识做了一个总结, 希 ...

  9. javascript基础学习(七)

    javascript之Object对象 学习要点: 创建Object对象 Object对象属性 Object对象方法 一.创建Object对象 new Object(); new Object(val ...

  10. (java)从零开始之--观察者设计模式Observer

    观察者设计模式:时当一个对象发生指定的动作时,要通过另外的对象做出相应的处理. 步骤: 1. A对象发生指定的动作是,要通知B,C,D...对象做出相应的处理,这时候应该把B,C,D...对象针对A对 ...