Java运算符及优先级(全)
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。
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运算符及优先级(全)的更多相关文章
- [转]Java 运算符的优先级
Java 运算符的优先级(从高到低) 优先级 描述 运算符 1 括号 ().[] 2 正负号 +.- 3 自增自减,非 ++.--.! 4 乘除,取余 *./.% 5 加减 +.- 6 移位运算 &l ...
- Java 运算符及优先级
运算符 分割符: , ; [] () 算数运算符: + - * / % ++ -- 关系运算符: > < >= <= == != 逻辑运算符: ! & | ^ & ...
- Java运算符的优先级(从高到低)
运算符的优先级(从高到低) 优先级 描述 运算符 1 括号 ().[] 2 正负号 +.- 3 自增自减,非 ++.--.! 4 乘除,取余 *./.% 5 加减 +.- 6 移位运算 << ...
- Java基本语法-----java运算符的优先级与结合性
这是本人以前的上学期间java 运算符这块知识的总结的,截图存到了word里,大家将就看下吧(不会用Markdown的表格 不然就在写一遍了 T T). [正在看本人博客的这位童鞋,我看你气度不凡,谈 ...
- java运算符的优先级
Java 编辑 运算符 结合性 [ ] . ( ) (方法调用) 从左向右 ! ~ ++ -- +(一元运算) -(一元运算) 从右向左 * / % 从左向右 + - 从左向右 << & ...
- java运算符的优先级和详解
优先级 符号 名称 结合性(与操作数) 目数 说明 1 . 点 从左到右 双目 ( ) 圆括号 从左到右 [ ] 方括号 从左到右 2 + 正号 从右到左 单目 - 负号 从右到左 单目 ++ ...
- JAVA运算符和优先级
1.算术运算符: ++ 和 -- 既可以出现在操作数的左边,也可以出现在右边,但结果是不同,如: ①int a=5: int b=a++: #先把a赋给b,a再自增 ②int a=5: int b=+ ...
- java 运算符的优先级比较
口诀:淡云一笔安洛三福 单目>算数运算符>移位>比较>按位>逻辑>三目>赋值 单目运算符:+,-,++,-- 算数运算符:+,-,*,/,% 移位运算符:&l ...
- java中运算符的优先级
所谓优先级,就是在表达式中的运算顺序.Java 中常用的运算符的优先级如下表所示: 级别为 1 的优先级最高,级别 11 的优先级最低.譬如,x = 7 + 3 * 2 得到的结果是 13 &quo ...
随机推荐
- 移位密码(加密+解密)C++实现
移位密码 加密C=Ek(m)=m+k mod 26 解密m=Dk(m)=c-k mod 26 密钥空间|k|=26=|c|=|m| #include<iostream> #include& ...
- 几个Python爬虫工具介绍
Request Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用 上面一句话 出自Requests官方文档的第一句,从而奠定了其逗逼的文档风格.类似的还有: 警告: ...
- 如何使用React搭建项目
1.首先说明node.js.npm.cnpm分别是做什么的? node.js简单的说 Node.js 就是运行在服务端的 JavaScript,安装了node.js默认安装了npm,可以使用npm - ...
- IDC是什么?
IDC:互联网数据中心,是电信部门利用已有的互联网通信线路.贷款资源,建立标准化的电信专业级机房环境,为企业.政府提供服务器托管.服务器租用以及相关增值等方面服务.IDC是全球协作的特定设备网络,用来 ...
- RedisTemplate.opsForValue 常用方法
RedisTemplate.opsForValue 常用方法 1.set(K key, V value) 新增一个字符串类型的值,key是键,value是值. redisTemplate.opsFor ...
- Servlet+jsp用户登录加上验证码
最近公司有个项目被客户拿去进行漏洞扫描,发现用户登录太简单,容易被暴力破解.当然发现的问题很多,什么反射型XSS,存储型XSS,敏感信息泄露等等.但是我们今天不讲这么多,就说说如何修复暴力破解的问题. ...
- 百度地图WEB端判断用户是否在网格范围内
在pc端设置商家的配送范围,用户在下单时,根据用户设置的配送地点判断是否在可配送范围内,并给用户相应的提示. 下面说下我的实现思路: 1.用百度地图在PC端设置配送范围,可拖拽选择 2.根据用户设置的 ...
- Winform中实现ZedGraph曲线图的图像复制到剪切板、打印预览、获取图片并保存、另存为的功能
场景 Winforn中设置ZedGraph曲线图的属性.坐标轴属性.刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...
- Hive bucket表
Hive 桶 对于每一个表(table)或者分区, Hive可以进一步组织成桶,也就是说桶是更为细粒度的数据范围划分.Hive也是 针对某一列进行桶的组织.Hive采用对列值哈希,然后除以桶的个数求余 ...
- Python Flask高级编程之RESTFul API前后端分离精讲 (网盘免费分享)
Python Flask高级编程之RESTFul API前后端分离精讲 (免费分享) 点击链接或搜索QQ号直接加群获取其它资料: 链接:https://pan.baidu.com/s/12eKrJK ...