oracle布尔运算,布尔运算符的不同之处:&VS&和x-vsx

我知道这里有很多答案,但它们似乎都有点混乱。因此,在从Java Oracle学习指南中进行了一些研究之后,我提出了三种不同的场景来说明何时使用&or&。这三种情况是逻辑与, 按位和,和布尔和.

合乎逻辑,并:逻辑和(也称为条件和)使用&&接线员。这是短路的意思:如果左操作数是假的,那么右操作数将不会被计算.

例子:

int x = 0;

if (false && (1 == ++x) {

System.out.println("Inside of if");

}

System.out.println(x); // "0"

在上面的示例中,输出到x控制台的值为0,因为if语句中的第一个操作数为false,因此java不需要计算(1=+x),因此不计算x。

按位和:并使用&接线员。它用于对值预先形成按位操作。通过查看二进制数字(例如:

int a = 5;     //                    5 in binary is 0101

int b = 12;    //                   12 in binary is 1100

int c = a & b; // bitwise & preformed on a and b is 0100 which is 4

正如您在这个例子中所看到的,当数字5和12的二进制表示排列在一起时,一个按位和预格式化的数字只会产生一个二进制数,其中两个数字中的相同数字都有一个1。因此,0101&1100=0100。小数是5&12=4。

布尔和:现在,布尔和运算符的行为与按位和逻辑以及逻辑和。我喜欢把它看作是按位和在两个布尔值(或比特)之间预先形成的,因此它使用&接线员。布尔值也可以是逻辑表达式的结果。

它返回一个真值或假值,与逻辑值非常相似,但与逻辑值不同,它不是短路的。原因是,为了使它预先按位表示,它必须知道左操作数和右操作数的值。这里有个前男友:

int x = 0;

if (false & (1 == ++x) {

System.out.println("Inside of if");

}

System.out.println(x); //"1"

现在,当运行该if语句时,即使左操作数为false,表达式(1=+x)也将被执行。因此,为x打印出来的值将为1,因为它是递增的。

这也适用于逻辑OR(X)、按位OR(X)和布尔OR(X)希望这可以消除一些混淆。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值