Java运算符(2)逻辑运算符、位运算符、三元运算符

目录

一、逻辑运算符

1.&逻辑与、&&短路与的区别

二、位运算符

1.异或^运算符实践

三、三元运算符

1.三元运算?实践


一、逻辑运算符

只能对布尔类型的值做运算,并且返回的值为布尔类型。

运算符名称作用
&逻辑与都真为真,一假则假
&&短路与都真为真,一假则假
|逻辑或都真、一真为真,全假则假
||短路或        都真、一真为真,全假则假
!逻辑非真假取反
^逻辑异或都真、都假为假,一真一假为真

1.&逻辑与、&&短路与的区别

案例1:分别让&、&&运算将结果赋值给result,检查后半段运算是否执行。

//&逻辑与、&&短路与的区别
class  operator1{
	public static void main(String[] args) {
		
		//&逻辑与、&&短路与的区别

		boolean front = false;
		int num1 = 168;
		boolean result1 = front & ++num1 > 8;	//使用&运算并赋值给result1
		System.out.println(" result = front & ++num1");
		System.out.println("boolean = " + result1 + "\nnum = " + num1 + "\n");

		int num2 = 168;
		boolean result2 = front && ++num2 > 8;	//使用&&运算并赋值给result2
		System.out.println(" result = front && ++num2");
		System.out.println("boolean = " + result2 + "\nnum = " + num2);
	}
}

结果:&、&&的运算返回结果一致,都为false,但是&&没有运算右边的方程式,num仍然为168

结论:&、&&计算返回结果都是一样的,但是&&一经检测到第一个布尔为假,则结束计算并返回结果,&则刚好相反。

优先考虑使用短路与&&,可减少运算量;不得不使用逻辑与&时再使用。

二、位运算符

运算符

名称

作用

<<

左移

二进制数位的左移操作,空缺位用0补齐

>>

右移

二进制的右移操作,空缺位使用与符号位相同的0或1补齐(负数为1、正数为0)

>>>

无符号右移

二进制的右移操作、空缺位用0补齐

&

与运算

同位都是1,那这一位为1,否则为0

|

或运算

至少有一个1则为1,否则为0

^

异或运算

位不同位1,相同为0

~

取反运算

位取反:位上的1和0切换

<<、>>、>>>是2进制位的左右移动;&、|、^为位的逻辑运算,对应的0为假,1为真。

~则是将二进制每个位上的0和1对调。

1.异或^运算符实践

案例2:使用异或运算符实现变量数值交换

    	//使用^异或运算符交换数值变量的值
		int ii = 98;
		int io = 65;
		ii = ii ^ io;	//将ii与io的差异值(相同的位用0表示,不同的位用1表示)赋值给ii
		io = ii ^ io;	//将原ii值赋值给io:io和ii都为0的位再次与0计算依然为0;io与ii都为1的位再次与0计算依然为1;io为0 ii为1的位再次与1计算结果为1实现io到ii的转变;io为1(ii为0)的位再次与1计算结果为0实现io到ii的转变
		ii = ii ^ io;	//将原io值赋值给ii:此时ii为ii与io的位差异值,再次与原ii值运算得到原io值
		System.out.println("ii =" + ii);
		System.out.println("io =" + io);

 

结果:ii和io的值互换了。

结论:ii(98)^io(65)的结果与65再次进行^运算得到的结果为98;ii(98)^io(65)的结果与98再次进行^运算得到的结果为65

三、三元运算符

三元运算符?:

              (布尔值)?返回值:返回值

                                          |             |

                                          真          假

1.三元运算?实践

案例3:使用三元运算?找出最大值。

//使用三元运算?找出最大值。
		int bb = 88;
		int ss = 66;
		int ll = 99;
		int max = (bb > ss)?bb:ss;
		max = (max > ll)?max:ll;
		System.out.println("最大值为" + max);

 

结果:正确得到最大值

结论:?三元运算符可以实现二选一来输出值。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值