运算符
Posted guoDaXia的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了运算符相关的知识,希望对你有一定的参考价值。
逻辑运算符
&(与)两边为true则为true,否则false
|(或)任意一边为true则为true
^(异或)两边不同则为true,两边相同则为false
!(非)原先为true则为false,原先为false则为true
&&(双与)两边为true则为true,否则false
||(双或)任意一边为true则为true
&&和&的区别:
短路问题:
&&先执行左边,如果根据左边就可以得出结论的话就不会执
行右边的操作和判断,直接输出判断结果。&会坚持将两边都
走完。
||和|也是这样的区别
举例子:
package test;
public class Test3 {
public static void main(String[] args){
int a=10;
int b=20;
int c=10;
int d=20;
boolean flag=((a=a+1)>50)&&((b=b+1)
>50);
boolean flag1=((c=c+1)>50)&((d=d+1)
>50);
System.out.println("a="+a+"\nb="+b
+"\nc="+c+"\nd="+d);
}
}
得到的a=11,b=20,c=11,d=21
^(异或):
两边相同则为false两边不同则为true
!(非):
针对一个元素,为true为变成false,为false则变成true
位运算符
对二进制进行运算
package test;
public class Test4 {
public static void main(String[] args){
/**
求3位与,位或,位异或4的结果
求~3的结果(按位取反)
注意:二进制的运算都是针对补码进行操
作的
正数的原反补都是一样
0代表false,1代表true,就是和逻辑运算
符的与或非异或差不多了
3: 00000000 00000000
00000000 00000011
4: 00000000 00000000
00000000 00000100
3&4:
00000000 00000000
00000000 00000000 转成十进制得到 0
3|4:
00000000 00000000
00000000 00000111 转成十进制得到7
3^4:
00000000 00000000
00000000 00000111 转成十进制得到7
~3:
补码: 11111111 11111111
11111111 11111100
反码: 11111111 11111111
11111111 11111011
原码: 10000000 00000000
00000000 00000100 得到-4
再写一个例子:
3&-4
3:
00000000 00000000
00000000 00000011
-4:
原: 10000000 00000000
00000000 00000100
反: 11111111 11111111
11111111 11111011
补: 11111111 11111111
11111111 11111100
得到:
补: 00000000 00000000
00000000 00000000 得到:0
^位异或的特点:
a对b进行了异或操作两次相当于没有进行
对b的异或操作。
以3^4^4为例子:
3: 00000000 00000000
00000000 00000011
4: 00000000 00000000
00000000 00000100
第一次: 00000000 00000000
00000000 00000111
4: 00000000 00000000
00000000 00000100
第二次: 00000000 00000000
00000000 00000011
可以发现,对同一个变量位异或2次就相当于没有异或
*/
System.out.println(3|4);
System.out.println(3^4);
System.out.println(~3);
System.out.println(3&(-4));
}
}
以上是关于运算符的主要内容,如果未能解决你的问题,请参考以下文章
Python算术运算符赋值运算符关系运算符逻辑运算符条件运算符(三元运算符)