Java基础之常见运算符

常见运算符规则图
在这里插入图片描述

一、&与&&的区别

Java中&和&&都是逻辑与,需要左右两边同时满足条件才可以得到true的结果。但是,它们之间也有区别:
&运算符有两种用法:(1)按位与;(2)逻辑与。
&&运算符是短路与运算。逻辑与跟短路与的差别是非常巨大的,虽然二者都要求运算符左右两端的布尔值都是true 整个表达式的值才是 true。&&之所以称为短路运算,是因为如果&&左边的表达式的值是 false,右边的表达式会被直接短路掉,不会进行运算。
注意:逻辑或运算符(|)和短路或运算符(||)的差别也是如此。

1、&&也叫短路与,当&&左边的条件不满足时,就不会判定右边的条件。而&不一样,无论‘&’左边的条件是否满足,它都会判定右边的条件。
比如:

int a = 2;
1>2? && a+1>2?

2、&可用于位运算,当左右两边的条件不是布尔型,而是数字时,它会进行位运算。
如:2 & 3就是合法的,会进行位运算。
n&1:与操作,判断 n 二进制最右一位是否为 1 。

/ 若等于1,表示最右一位是1// 否则是0.
if ((n & 1) == 1) {
    
    
    ...
}
//记得判断中的括号不能省略,否则会优先运算1==1,导致报错。

n&1常用来判断n是奇数还是偶数。

if (n & 1) == 1):
	n为奇数
if (n & 1) == 0):
	n为偶数 

二、>>和<<运算符的计算方法

n>>1:移位操作,删除n二进制的最右一位,也就整体向右移动一位。

n = n>>1;
// 简写如下
n >>= 1;

举个例子:
10>> 1的结果是5,计算方法:10/(2)=5 取整后等于5
10>>2 的结果是2,计算方法:10/(22)=2.5 取整后等于2
10>>3 的结果是1,计算方法:10/(2
2*2)=1.25 取整后等于1

10<<1的结果是20,计算方法:102=20
10<<2的结果是40,计算方法:10
22=40
10<<3 的结果是8 0,计算方法:10
222 =8 0

猜你喜欢

转载自blog.csdn.net/ChenYiRan123456/article/details/129639558