1.现实场景:做了一个星期的需求,刚于周一上线,然后周三改了两个小版本,周四下班前突然说整个方案大改,并且下周一的版本直接上(不要误会,虽然一周一个版本,但是基本不加班。此处没有滑稽,因为其他人在6点之前走完了。。。真的不加班)。
2.业务场景:一个订单下的所有物资都已经到货,并且尾款没有付清,发送追款邮件。
3.部分代码:
boolean allArrived = true;
boolean existNotPaid = false;
一大堆逻辑巴拉巴拉。。。改变allArrived,existNotPaid变量的值
方法最后,
if(allArrived && existNotPaid){
调用发邮件的服务。。。
}
本来这个时候应该完事了,但是突然想起来,如果allArrived = false并且existNotPaid = false。会不会进入if判断,发邮件出去呢?当然这个时候还是记得&&运算符一旦第一个变量为false,不会去判断第二个变量。&运算符无论第一个变量true or false都会判断第二个变量。但是会不会false&false = true?手动试一试。
3.丑陋的测试代码:
public class TestBoolean {
public static void main(String[] args) {
System.out.println(false & false);
System.out.println(false && false);
}
}
4.结果:
false
false
5.一点点想法:&和&&都是运算符两边都为true时,结果才是true。但是java有什么运算符能让false和false变为true呢?去搜了一番,发现并没有这样的问题,暂时放下,继续加班。。。