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

Java运算符分为以下几种:

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

• 赋值运算符:=

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

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

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

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

• 三目运算符:? :

1、算术运算符

1)+:加法运算符

例如如下代码:

int a = 1;

int b = 2;

int sum = a+b;

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

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

2)-:减法运算符

例如如下代码:

int a = 3;

int b = 2;

int sub = a-b;

System.out.println(sub); //sub的值为1

3)*:乘法运算符

例如如下代码:

int a = 5;

int b = 6;

int multiply = a*b;

System.out.println(multiply ); //multiply 的值为30

4)/:除法运算符

例如如下代码:

int a = 10;

int b = 5;

int div = a/b;

System.out.println(div); //div的值为2

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

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

例如如下代码:

int a = 10;

int b = 3;

int mod = a%b;

System.out.println(mod ); //mod 的值为1

注:求余运算符的结果不一定总是整数。如果求余运算符的两个操作数都是整数,则第二个操作数不能为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--是错误的!

2. 赋值运算符

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

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

 3. 扩展后的赋值运算符

+=:对于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。

 4. 位运算符

&:按位与。当两位同时为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

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

5. 比较运算符

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

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

代码示例如下:

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

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

6. 逻辑运算符

逻辑运算符用于操作两个布尔的变量或常量,有如下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){

  System.out.println(b); //输出10,说明b++ >9得到了计算

}

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

  System.out.println(b); //输出9,说明b++ >9没有得到了计算

}

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

7. 三目运算符

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

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

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

程序实例如下:

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

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

8. 运算符的优先级

运算符优先级(优先级上行优先于下行)
运算符说明 Java运算符
分隔符 . [] () {} , ;
单目运算符 ++ -- ~ !
强制类型转换运算符 (type)
乘法、除法、求余 * / %
加法、减法 + -
移位运算符 <<  >>  >>>
关系运算符 < <= > >=  instanceof
等价运算符 ==   !=
按位与 &
按位异或 ^
按位或 |
条件与 &&
条件或 ||
三目运算符 ?:
赋值 = += -= *= /= &= |= ^= %= <<= >>= >>>=

欢迎关注微信公众号【Java典籍】,收看更多Java技术干货!关注即送java全套资料一份

   ▼微信扫一扫下图↓↓↓二维码关注

 

Java运算符及优先级(全)的更多相关文章

  1. [转]Java 运算符的优先级

    Java 运算符的优先级(从高到低) 优先级 描述 运算符 1 括号 ().[] 2 正负号 +.- 3 自增自减,非 ++.--.! 4 乘除,取余 *./.% 5 加减 +.- 6 移位运算 &l ...

  2. Java 运算符及优先级

    运算符 分割符: , ; [] () 算数运算符: + - * / % ++ -- 关系运算符: > < >= <= == != 逻辑运算符: ! & | ^ & ...

  3. Java运算符的优先级(从高到低)

    运算符的优先级(从高到低) 优先级 描述 运算符 1 括号 ().[] 2 正负号 +.- 3 自增自减,非 ++.--.! 4 乘除,取余 *./.% 5 加减 +.- 6 移位运算 << ...

  4. Java基本语法-----java运算符的优先级与结合性

    这是本人以前的上学期间java 运算符这块知识的总结的,截图存到了word里,大家将就看下吧(不会用Markdown的表格 不然就在写一遍了 T T). [正在看本人博客的这位童鞋,我看你气度不凡,谈 ...

  5. java运算符的优先级

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

  6. java运算符的优先级和详解

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

  7. JAVA运算符和优先级

    1.算术运算符: ++ 和 -- 既可以出现在操作数的左边,也可以出现在右边,但结果是不同,如: ①int a=5: int b=a++: #先把a赋给b,a再自增 ②int a=5: int b=+ ...

  8. java 运算符的优先级比较

    口诀:淡云一笔安洛三福 单目>算数运算符>移位>比较>按位>逻辑>三目>赋值 单目运算符:+,-,++,-- 算数运算符:+,-,*,/,% 移位运算符:&l ...

  9. java中运算符的优先级

    所谓优先级,就是在表达式中的运算顺序.Java 中常用的运算符的优先级如下表所示: 级别为 1 的优先级最高,级别 11 的优先级最低.譬如,x = 7 + 3 * 2  得到的结果是 13 &quo ...

随机推荐

  1. 牛客网暑期ACM多校训练营(第三场) C Shuffle Cards 平衡树 rope的运用

    链接:https://www.nowcoder.com/acm/contest/141/C来源:牛客网 Eddy likes to play cards game since there are al ...

  2. poj 2777 Count Color(线段树(有点意思))

    题目链接 http://poj.org/problem?id=2777 题意:题意是有L个单位长的画板,T种颜色,O个操作.画板初始化为颜色1.操作C讲l到r单位之间的颜色变为c,操作P查询l到r单位 ...

  3. 【Offer】[53-2] 【0~n-1中缺失的数字】

    题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内.在范围0~n-1内的n个数字中有且只有一个数字 ...

  4. 054 Python程序设计思维

    目录 一.单元开篇 二.计算思维与程序设计 2.1 计算思维 2.1.1 第3种人类思维特征 2.1.2 抽象和自动化 2.1.3 计数求和:计算1-100的计数和 2.1.4 圆周率的计算 2.1. ...

  5. Windows服务器远程桌面不能复制粘贴的解决方法

    今天使用windows 2008服务器,实然就不能从本地复制内容和粘贴内容了,从网上找了下原因,最终解决了.一般本地和服务器不能复制粘贴分两种情况: 情况一:复制粘贴功能原本可以用,突然失灵了. 解决 ...

  6. Android-WebView支持input file启用相机/选取照片

    webview要调起input-file拍照或者选取文件功能,可以在webview.setWebChromeClient方法中重写指定的方法,来拦截webview的input事件,并做我们相应的操作. ...

  7. linux非root用户下安装软件,搭建生产环境

    之前的用实验室的服务器,因为某些原因,使用的用户没有root权限.linux的非root用户很多软件无法安装,非常的不方便.我的方法是使用brew来代替系统的包管理工具.brew是最先用在mac上的包 ...

  8. SpringBoot系列——Security + Layui实现一套权限管理后台模板

    前言 Spring Security官网:https://spring.io/projects/spring-security Spring Security是一个功能强大且高度可定制的身份验证和访问 ...

  9. apk签名发布及其原理

    如果我们在ADT中开发完了一个android项目,如何将它打包呢?方法如下: 1.unsigned APP(无签名的APP) 最懒惰的方法,可以直接在项目的bin目录下直接将apk拷贝出来,就ok了. ...

  10. 「小技巧」使用Git从其他分支merge个别文件

    小明发现在实际项目开发过程中,总会遇到各种各样的情况,比如一个大型的项目或版本迭代可能不是一次上线,可能会分好几次上线,这时候就会涉及创建多个分支,分别开发. 项目背景 产品经理:我们本次开发三个功能 ...