专栏首页Java典籍Java运算符及优先级(全)

Java运算符及优先级(全)

运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。

Java运算符分为以下几种:

➤算术运算符:+,-,*,/,%,++,--

➤赋值运算符:=

➤扩展后的赋值运算符:+=,-=,*=,/=,%=,&=,|=,^=,<<=,>>=,>>>=

➤位运算符:&,|,~,^,<<,>>,>>>

➤比较运算符:>,>=,<,<=,==

➤逻辑运算符:&&,&,||,|,!,^

➤三目运算符:? :

一、算术运算符

1)+:加法运算符

例如如下代码:

int a = 1;

int b = 2;

int sum = a+b;

//sum的值为3

System.out.println(sum);

另外,+还可以作为字符串的连接运算符。

2)-:减法运算符

例如如下代码:

int a = 3;

int b = 2;

int sub = a-b;

//sub的值为1

System.out.println(sub);

3)*:乘法运算符

例如如下代码:

int a = 5;

int b = 6;

int multiply = a*b;

//multiply 的值为30

System.out.println(multiply );

4)/:除法运算符

例如如下代码:

int a = 10;

int b = 5;

int div = a/b;

//div的值为2

System.out.println(div);

注:如果除法运算符的两个操作数都是整数类型,则计算结果为整数,除数不可以为0,否则会引发异常;如果除法运算符的两个操作数中至少一个是浮点数,则计算结果也是浮点数,此时除数可以为0或0.0,得到的结果是正无穷大或负无穷大。

5)%:求余运算符(取模运算符)

例如如下代码:

int a = 10;

int b = 3;

int mod = a%b;

//mod 的值为1

System.out.println(mod );

注:求余运算符的结果不一定总是整数。如果求余运算符的两个操作数都是整数,则第二个操作数不能为0(同除法运算规则);如果求余运算符的两个操作数中至少一个是浮点数,则第二个操作数可以是0或0.0,但求余结果是是非数:NaN。

6)++:自加运算符

++自加运算符是单目运算符(一元运算符),只有一个操作数。运算符既可以放在操作数的左边也可以放在操作数的右边。如果把++放在左边,则先把操作数加1,然后再运算;如果把++放在右边,则先运算,然后再把操作数加1。

自加运算符放在操作数左边的代码:

int a = 2;

int b = ++a + 3; //a先自加,然后再执行算术运算

System.out.println(a); //a的值为3

System.out.println(b); //b 的值为6

自加运算符放在操作数右边的代码:

int a = 2;

int b = a++ + 3; //a先执行算术运算,再自加

System.out.println(a); //a的值为3

System.out.println(b); //b 的值为5

7)--:自减运算符

--自减运算符也是单目运算符(一元运算符),只有一个操作数。用法与++类似,只是将操作数的值减1;

注:自加和自减只能用于操作变量,不能用于操作数值直接量、常量或表达式。例如3--是错误的!

二、赋值运算符

赋值运算符用于为变量指定变量值。

例如 String str = "java"; //为变量str赋值java

三、扩展后的赋值运算符

● +=:对于a+=b,即对应于a=a+b。

● -=:对于a-=b,即对应于a=a-b。

● *=:对于a*=b,即对应于a=a*b。

● /=:对于a/=b,即对应于a=a/b。

● %=:对于a%=b,即对应于a=a%b。

● &=:对于a&=b,即对应于a=a&b。

● |=:对于a|=b,即对应于a=a|b。

● ^=:对于a^=b,即对应于a=a^b。

● <<=:对于a<<=b,即对应于a=a<<b。

● >>=:对于a>>=b,即对应于a=a>>b。

●>>>=:对于a>>>=b,即对应于a=a>>>b。

四、位运算符

● &:按位与。当两位同时为1时才返回1。

● |:按位或。只要有一位为1就返回1。

● ~:按位非。单目运算符,将操作数的每一位(包括符号位)全部取反。

● ^:按位异或。当两位不同时返回1,相同时返回0。

● <<:左移运算符。

● >>:右移运算符

● >>>:无符号右移运算符

代码示例如下:

System.out.println(5&9); //输出1

System.out.println(5|9); //输出13

System.out.println(~-5); //输出4

System.out.println(5^9); //输出12

System.out.println(5<<2); //输出20

System.out.println(-5<<2); //输出-20

System.out.println(-5>>2); //输出-2

//下面输出1073741822

System.out.println(-5>>>2);

五、比较运算符

比较运算符用于判断两个常量或变量的大小,比较结果是是一个布尔值(true或false)。

比较运算符有:>(大于),>=(大于等于),<(小于),<=(小于等于),==(等于)。

代码示例如下:

System.out.println(7>3); //输出true

System.out.println(7<=3); //输出false

六、逻辑运算符

逻辑运算符用于操作两个布尔的变量或常量,有如下6个:

● &&:与,两个操作数都为true才返回true,否则返回false。

● &:不短路与,作用与&&相同,但不会短路。

● ||:或,两个操作数只要有一个为true,就返回true,两个操作数都为false才返回false。

● |:不短路或,作用与||相同,但不会短路。

● !:非,或取反,如果操作数是true,则返回false。如果是false,则返回true。

● ^:异或,当两个操作数不同时才返回true,相同返回false。

下面代码示范了逻辑运算符短路与不短路的区别(以|和||的区别为例):

int a = 3;

int b = 9;

if(a>2 | b++ >9){

//输出10,说明b++ >9得到了计算

 System.out.println(b);

}

if(a>2 || b++ >9){

//输出9,说明b++ >9没有得到了计算

 System.out.println(b);

}

&与&&的区别与此类似。

七、 三目运算符

三目运算符:? :,语法格式如下:

(expression) ? if-true-statement : if-false-statement

三目运算符的语法规则是:先对逻辑表达式expression求值,如果expression返回true,则返回第二个操作数的值,否则返回第三个操作数的值。

程序实例如下:

String str = 7>4?"7大于4":"7不大于4";

System.out.println(str); //输出7大于4

八、 运算符的优先级

下表中优先级上行优先于下行

本文分享自微信公众号 - Java典籍(helloHBLing),作者:冰湖一角

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • instanceof运算符&引用变量的强制类型转换

    instanceof是Java语言中的一个二元运算符,它的作用是判断一个引用类型的变量所指向的对象是否是一个类(或接口、抽象类、父类)的实例,即它左边的对象是否...

    硕人其颀
  • 操作集合的工具类:Collections

    Java提供了一个操作Set、List和Map等集合的工具类:Collections,该工具类提供了大量的方法对集合元素进行排序、查询和修改等操作,还提供了将集...

    硕人其颀
  • SVN恢复历史版本及解决冲突方法

    前段时间有小伙伴们问我关于SVN恢复历史版本及解决冲突的问题,今天抽空就整理了一下,以为在此以前,有的小伙伴解决冲突使用的方法是:先把自己写的代码备份或删掉,更...

    硕人其颀
  • PHP运算符

    只能放在变量、常量、函数和include调用之前等。不能用在函数和类定义之前以及条件结构之前使用

    白胡杨同学
  • c语言运算符号详细说明

    C语言中具有右结合性的运算符包括所有单目运算符以及赋值运算符(=)和条件运算符。其它都是左结合性。

    谙忆
  • 前端测试题:(解析)下列选项中,属于JavaScript中运算符的有哪些?

    舒克
  • Go语言运算符

    同C++,Go也不支持Java的循环左移<<<和循环右移>>>。因为它的整型有有符号和无符号之分。<<<也称为无符号左移,>>>也称为无符号右移。

    Steve Wang
  • Java之运算符(下)

    条件运算符也被称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。

    用户5224393
  • 3.2 运算符和表达式

    在表达式求值时,先按运算符的优先级别顺序执行,例如先乘除后加减。如果在一个运算对象两侧的运算符的优先级别相同,则按照结合方向“自左至右”即先左后右执行。

    C语言入门到精通
  • js-数据运算

    加法运算符是在运行时决定,到底是执行相加,还是执行连接。也就是说,运算子的不同,导致了不同的语法行为,这种现象称为“重载”(overload)

    bamboo

扫码关注云+社区

领取腾讯云代金券