1. 运算符
Java运算符分为算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、三元运算符。
2. 算术运算符
2.1 +(正号)、-(负号)
2.2 +、-、*、\、%、
运算与常规四则运算相同。
%:取模,表示求余数,5%2=1,6%2=0。负数对正数取模的结果是负数。
/:对于一个整形4567,4567/1000*1000=4000,而不是原数。
2.3 ++、--、
++:表示自增
-----:表示自减
注意:a=++a,会先自增在赋值。而a=a++,会先赋值,再自增。
2.4 +号还有连接字符串的功能。
“he”+”llo”=”hello”
System.out.println("5+5="+(5+5));//结果是:5+5=10
System.out.println("5+5="+5+5);//结果是:5+5=55
3. 赋值运算符
=、+=、-=、*=、%=
即常规运算并赋值。
注意:这些都是一次运算, s=s+1是两次运算。
4. 比较运算符
== 、 != 、>= 、<= 、> 、< 、instanceof
比较运算符的结果要么是true要么是false。
5. 逻辑运算符
&、!、|、^、&&、||
逻辑运算符用于连接布尔型表达式,规则如下:
&(与):有假则假
|(或):有真则真
^(异或):相异为真
&&(短路与):左边假,右边不判断
||(短路或):左边真,右边不判断
6. 位运算符
左移:<< 3<<2=3*2*2=3*4=12
右移:>> 3>>2=3/2=1
无符号右移:>>> 3>>>1=3/2=1
与运算:& 6&3=2
或运算:| 6|3=7
异或运算: 6^3=5
反码: ~ ~6=-7
6.1 负数等于取反+1,所以反码=负数-1;
6.2 正常右移是补符号位,正数右移会补0,负数右移会补1,这样会导致负数永远移不完,所以右移应该用无符号右移。
6.3 &运算可以用来获得对应的二进制位,例如&15,或者最后四位二进制位。好处在于对于负数也有效。
6.4 位运算方法:
在二进制中,1表示真,0表示假。
根据以上原则,可以将数值转换成二进制并使用逻辑运算符规则进行运算。
例如:6^3
110
^011
------
101
所以6^3的结果是5。
6.5 两次异或的结果等于本身,可以通过此方式来来进行加密。
练习1:对两个变量的数据进行互换。不需要第三方变量。
int a = 3,b = 5;-->b = 3,a = 5;
方法1:
a = a + b; a = 8;
b = a - b; b = 3;
a = a - b; a = 5;
//最好不要用,相加可能溢出
方法2:用异或的方式
a = a ^ b;
b = a ^ b;//b = a ^ b ^ b = a
a = a ^ b;//a = a ^ b ^ a = b;
练习2:高效的算出 2*8 = 2<<3;
7. 三元运算符
7.1 格式:条件表达式?表达式1:表达式2
根据条件表达式进行判断,true则执行表达式1,false则执行表达式2。
例如:
int a=3,b=5;
int max=a>b?a:b;
System.out.println(max);//输出5