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基础】Java运算符优先级的更多相关文章

  1. Java基础-比较运算符Compare Operators

    Java基础-比较运算符Compare Operators 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.关系运算符 关系运算符包括: 1>.大于(>) 2> ...

  2. Java基础-算术运算符(Arithmetic Operators)

    Java基础-算术运算符(Arithmetic Operators) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Java程序通过运算符实现对数据的处理,Java中的运算符包括: ...

  3. Java基础-位运算符Bitwise Operators

    Java基础-位运算符Bitwise Operators 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.位运算特点 位运算符分为按位与(&),按位或(|),按位异或(^ ...

  4. java基础---->java中正则表达式二

    跟正则表达式相关的类有:Pattern.Matcher和String.今天我们就开始Java中正则表达式的学习. Pattern和Matcher的理解 一.正则表达式的使用方法 一般推荐使用的方式如下 ...

  5. Java基础-Java中的堆内存和离堆内存机制

    Java基础-Java中的堆内存和离堆内存机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  6. Java基础-Java中的内存分配与回收机制

    Java基础-Java中的内存分配与回收机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一. 二.

  7. Java基础-Java中的并法库之重入读写锁(ReentrantReadWriteLock)

    Java基础-Java中的并法库之重入读写锁(ReentrantReadWriteLock) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在学习Java的之前,你可能已经听说过读 ...

  8. Java基础-Java中的并法库之线程池技术

    Java基础-Java中的并法库之线程池技术 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是线程池技术 二.

  9. Java基础-Java中23种设计模式之常用的设计模式

    Java基础-Java中23种设计模式之常用的设计模式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   一.设计模式分类 设计模式是针对特定场景给出的专家级的解决方案.总的来说设 ...

  10. Java基础-JAVA中常见的数据结构介绍

    Java基础-JAVA中常见的数据结构介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是数据结构 答:数据结构是指数据存储的组织方式.大致上分为线性表.栈(Stack) ...

随机推荐

  1. SQL Server死锁总结

    1. 死锁原理 根据操作系统中的定义:死锁是指在一组进程中的各个进程均占有不会释放的资源,但因互相申请被其他进程所站用不会释放的资源而处于的一种永久等待状态. 死锁的四个必要条件:互斥条件(Mutua ...

  2. 简述<T> 与 <?>

    引 jdk1.5以后引入了泛型的概念,即:<>,规定了集合中元素类型 比如下面代码: List list1 = new ArrayList(); List<String> li ...

  3. Python面向过程和面向对象基础

    总结一下: 面向过程编程:根据业务逻辑从上到下的写代码-----就是一个project写到底,重复利用性比较差 函数式:将某些特定功能代码封装到函数中------方便日后调用 面向对象:对函数进行分类 ...

  4. Linux命令详解-cp

    cp 命令用来复制文件或者目录,是Linux系统中最常用的命令之一.一般情况下,shell会设置一个别名,在命令行下复制文件时,如果目标文件已经存在, 就会询问是否覆盖,不管你是否使用-i参数.但是如 ...

  5. Java Object类的方法

    1. Java中所有的类都直接或者间接地继承自Object类.当没有显式地声名一个类的父类时,它会隐式地继承Object类. 2. Object类中定义了适合于任何Java对象的方法. String ...

  6. Ansible 开发调试 之【模块调试】

    本地调试 需要安装jinja2 库 yum -y install python-jinja2 使用官方提供的测试脚本调试 git clone git://github.com/ansible/ansi ...

  7. ADO.NET简介

    一.ADO.NET ADO.NET源起ADO(ActiveX Data Objects),是一个COM组件库,在NET编程环境中优先使用的数据访问接口, 提供对诸如 SQL Server 和 XML ...

  8. Algorithm1: 全排列

    全排列 思想:      这是一个全排列问题,需要使用递归实现,将数组中的所有元素和第一个元素交换,求后面n-1个元素的全排列.      按照这个条件递归下去,知道元素的个数只有一个的时候,输出所有 ...

  9. bzoj2547

    题解: 二分+宽搜+KM 显然答案不能太大 然后二分一下 代码: #include<bits/stdc++.h> ,M=; using namespace std; ]={-,,,},dy ...

  10. HtmlHelper.Raw,<%%>,<%:%>,<%=%>的区别及使用

    Mvc中<%%>,<%:%>,<%=%>的区别及使用 1.<%%> <%%>之间可以执行服务端代码,如<% foreach (Data ...