在阅读 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 语句的判断。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于