Java运算符与C运算符类似,分为算术运算符、逻辑运算符、关系运算符以及位运算符。
Java语言支持如下运算符:
算术运算符:+、-、*、/、%、++、- -
赋值运算符:=、+=、-=、*=、/=等等 a+=3表示a=a+3
位运算符:~、&、|、^
逻辑运算符:!、&&、||
关系运算符:>、<、>=、<=、= = 、!=
移位运算符>>、<<、>>>(无符号右移)
除了移位运算符与C语言的不同外,其他均一样,C的移位运算符右移只用>>表示。
注: Java按照运算符两边最高精度保留结果,即如果int类型数据与float类型数据进行运算,结果为float类型。
位运算与逻辑运算
1、位运算
位运算是将数据先转化为二进制数补码形式,再逐位(bit)按规则计算。
4中位运算符(& 、|、~、^)
(1)“按位与”运算符“&”,规则:全1则1,否则为0
(2)“按位或”运算符“|”,规则:全0则0,否则为1。
(3)“按位非”运算符“~”,规则:遇1则0,遇0则1。
(4)“按位异或”运算符“^”,规则:相同为0,不同为1。
注:按位异或运算是可逆的,即如果对某个数据a进行两次相同的异或运算,则结果会还原为a,如对数值3进行两次和5的异或运算: 3 ^ 5 = 6; 6 ^ 5 = 3;
2、逻辑运算
逻辑运算符:
运算符
用法
含义
&&
op1&&op2
逻辑与
||
op1||op2
逻辑或
!
!op
逻辑非
逻辑运算符规则:
op1
Op2
op1&&op2
op1||op2
!op1
true
True
true
true
false
True
False
false
true
false
False
True
false
true
true
False
False
false
false
true
3、逻辑运算符(&&、||)与位运算符(&、|)的区别:
1、逻辑运算符只能针对boolean类型进行逻辑运算,而位运算还可以对数值进行逻辑运算。
2、逻辑运算符有短路情况,即前面的表达式可以得到最终结果时,后面的表达式将不被执行。
几种语言位运算符区别
含义Pascal语言C语言C#语言Java易语言按位与a and ba & ba & ba & b位与 (a, b)按位或a or ba | ba | ba | b位或 (a, b)按位异或a xor ba ^ ba ^ ba ^ b位异或 (a, b)按位取反not a~a~a~a位取反 (a)左移a shl ba << ba << ba << b左移 (a, b)带符号右移a shr ba >> ba >> ba >> b/无符号右移///a>>> b/编程实验:
public class A1{ public static void main(String[] args){ final double PI=3.14; //PI=2.1;不能二次赋值 System.out.println(PI); System.out.println("##############"); int result=(int)1.0+2;//1.0为double型,故此运算最高精度为double,需强制类型转换 System.out.println(result); int y=10; int z=12; if((y=0)==0||(z=0)==0)//短路z的值没变,第一个条件为真,不许进行z=0的操作,故z=12 System.out.println(z); int m=10; int n=12; if((m=0)==0|(n=0)==0)//两边都进行,m=0,n=0,均为真,故输出n,此时n已被赋值为0 System.out.println(n); } }编译及运行结果: