如图是java中常见的运算符,运算符中优先级越小优先级越高,那让我们一起去挖掘一下它们的小秘密
1、[]
第一句是声明一个数组。
第二句是属性获取,获取数组中对应下标中的内容。
我们可以尝试打印一下
第一句需要注意一下,其中[的意思是数组类型,I表示的数组里面装的是int
类型,剩下的表示数组对应的地址。
2、 .
.运算符虽然个头很小,但是功能却不小,一般用来调用方法
图中调用的是length方法
3、()
()主要用来调用函数,这里不做过多介绍
4、~
按位取反符,见名知意,是取对应相同位置二进制的相反数,0的相反数是1,1的相反数是0
如图,11的按位取反后的二进制数是 1111 0111对应的值是-12
5、|
按位或符,按对应二进制位置进行或运算
如图 11与13的按位或是15
6、&
按位与符,按对应二进制位置进行与运算
如图是11和13的按位与,对应的值是9
7、^
按位异或符,也是对应位置异或操作,异或是不一样的或,一样的是'0'
如图这是11和13的按位异或,对应的值是5
8、>>
右移运算符,比如数字11右移两位就是 11>>2
这里要注意一点右移后要补的不一定是0,补充的是符号位。如果是负数,补充1。
上图我们可以发下一个有趣的关系
右移也可以用如图公式计算
9、<<
左移也如右移一样运算,不过特别注意的是
这里涉及到了隐式转化的问题,byte类型的11左移四位后不再是byte类型,转化成了更高阶的类型来接纳,最前面的不再是符号位,因此结果是176。
10、>>>
无符号右移符,这里的用法参考>>符,区别在于右边符号位统统补0
这里输出的是2147483647
11、++ ——
++ ——有两种用法,前置和后置,这里我们以++为例
结果是10,这里要注意的是int b = a++操作,分解是先 tmp=a;a++;b=tmp;这里的tmp是一个临时变量。所以打印出来的b是10。
不同的是如果是++a的话,结果是11,具体步骤是,a=10;++a;b=a;
输出结果是11
——也是同样的操作
11、+=
混合运算符,我们这里只举例+=。a+=1相当于a=a+1;
12、? :
条件运算符,以啊a,b举例
a>b?a:b
这句代码的意思是a>b的值为真返回a ,如果为假返回b。
13、%
取模符,意思是取余数,这里我们举几个例子
结果依次是1,-1,-1,1;
这里我们以-10%3举例
14、&&
短路与符,这里我们直接举例
这里面有三个函数,fun1,fun2,fun3分别是
输出的结果是
可以看出&&当前面运算为假后,后面的&&没有执行,我们总结短路与是:一个假的
后面都不执行,结果为假
15、||
短路或符,与短路与类似,这里我们不过举例。短路或的结论是:一个真后面的都不
执行,结果为真
以上是我简单总结的java中的运算符。
(新手上路,如有错误请多指教,谢谢!)