Java基础(三):运算符
Java的运算符主要包括算数运算符,赋值运算符,比较运算符,逻辑运算符,位运算符与条件运算符。
1.算数运算符
1.1加减乘除
算术运算符主要是做加减乘除取模。加减乘除自然不必多说,我们来介绍一下取模。
1.2取模
取模运算符%是编程基础运算符之一,用来计算两数相除后的余数,奇偶判断、循环轮询、数字截取等功能都依赖它,是开发高频工具。
比如要判断一个数字的奇偶,可以模2,余1为奇,余0为偶。
取模还可以拆分数字,
例:567 567 % 10 = 7
567 / 10 = 56
56 % 10 = 6 56 / 10 = 5
5 % 10 = 5
1.3自增自减符
1.如果单独使用,自增自减没有任何区别。
不论是i++;还是++i;都是对i进行+1。
2.如果混合使用,比如i=1;
j=++i;和j=i++;那么i的自增就会影响j的值。
j=i++;是j先等于i,然后i再++,也就是j=1,i=2。
j=++i;是i先++,然后j再取i的值,也就是i=2,j=2。
2.赋值运算符
写代码时我们总离不开存数据,赋值运算符就是装载数值的工具。
a是变量,a=5就是将5放入变量a里面。
而后面的+=,-=等属于复合赋值运算符,本质上就是简写语法,等价于以下写法。
3.比较运算符
比较运算符只需要记住!是否定的意思,!=也就是不等于。
记住了这个,剩下的比较运算符也就信手拈来啦。。
4.逻辑运算符
逻辑运算符是针对两个布尔类型。
4.1逻辑与&&
逻辑与对于两个布尔类型,可以理解为,前者和后者同时满足,整体才是true。
如果前者就不满足,那么语法上就会直接结束这个语句。不执行后者。
如图所示,a<3已经返回的是false,那么++a将不会执行,也就是说a最终的结果仍然是5。
4.2逻辑或||
逻辑或对于两个布尔类型,可以简单理解为,只需要前者或后者满足,就能返回true。
但同样的,和逻辑与运算符类似,如果前者语句满足条件,返回true,那么系统就会默认整体语句为真,后者直接执行。
如图所示,前者为真的情况下,就算后者为假,++num也依旧执行。
4.3逻辑非
逻辑非的作用主要是取反。
常见用法是判空。。
5.按位运算符
按位运算符主要是针对二进制数值
5.1按位与
按位与针对两数字的二进制形式,对应位全1才为1,有0就是0。清除二进制某一位。
比如3&5
0000 0011-----------最终结果是0000 0001
0000 0101 也就是1
他的使用场景主要有:1.判断奇偶:n&1,结果1是奇数,0 是偶数。
2.清除二进制某一位。
5.2按位或
按位与针对两数字的二进制形式,对应位全0才为0,有1就是1。
比如3|5
0000 0011---------------最终结果是0000 0111
0000 0101 也就是7
5.3按位异或
按位与针对两数字的二进制形式,对应相位相同为0,不同为1。
比如3^5
0000 0011---------------最终结果是0000 0110
0000 0101 也就是6
使用场景:1.判断两数字是否相同,n^n=0。
2.n^0=n。
5.4按位取反
按位与针对单一数字的二进制形式,把每一位1变成0,0变成1。
5.5左移运算符和右移运算符(<<和>>)
左移运算符:按位与针对单一数字的二进制形式,将所有比特位向左移动1位,最右边补0。向左移一位就相当于乘以2。
右移运算符:按位与针对单一数字的二进制形式,将所有比特位向右移动,最左边补符号位。向右移一位,就相当于除以2。
5.6无符号右移>>>
无符号右移,不论正数还是负数,左边统一补0。
因为右边没有符号位,所以没有无符号左移。
6.条件运算符
7.运算符的优先级
在一条表达式中,各个运算符可以混合起来进行运算,但是运算符的优先级不同, 比如: * 和 / 的优先级要高于 + 和 - ,有些情况下稍不注意,可能就会造成很大的麻烦。