在阅读 AtomicStampedReference
的源码中,在 compareAndSet()
方法发现一段代码:
return
expectedReference == current.reference &&
expectedStamp == current.stamp &&
//上方条件全部符合且为True时,执行下方代码
((newReference == current.reference &&
newStamp == current.stamp) ||
casPair(current, Pair.of(newReference, newStamp)));
即在 return 执行方法,并获取最终结果。我编写了一段代码用以测试:
public class Main {
public static void main(String[] args) {
Main main = new Main();
System.out.println(
main.executeIsTrue()
);
System.out.println();
System.out.println(
main.executeIsFalse()
);
}
boolean executeIsTrue() {
return
//这行判断结果为True,可以执行say(String word)方法
(retTrue() && retTrue()) &&
//上述两条都为True,则执行下面代码
(print("OK"));
}
boolean executeIsFalse() {
return
//这行判断结果为False,不能执行say(String word)方法
(retTrue() && retFalse()) &&
//上述两条都为True,则执行下面代码
(print("OK"));
}
boolean retTrue() { return true; }
boolean retFalse() { return false; }
boolean print(String word) { System.out.println(word); return true; }
}
得到返回结果:
OK
true
false
摘自 https://www.cnblogs.com/yxiaooutlook/p/7606277.html:
System.out.println(true && false); //结果为false
System.out.println(true && true); //结果为true
System.out.println(false && false); //结果为false
System.out.println(false && true); //结果为false
即充分利用判断运算符(&&、||)返回 boolean 的短路,实现在 return 中实现类似 if 语句的判断。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于