随笔 | 奇淫技巧 | Java:记return和短路运算符的妙用

在阅读AtomicStampedReference的源码中,在compareAndSet()方法发现一段代码:

1        return
2            expectedReference == current.reference &&
3            expectedStamp == current.stamp &&
4	    //上方条件全部符合且为True时,执行下方代码
5            ((newReference == current.reference &&
6              newStamp == current.stamp) ||
7             casPair(current, Pair.of(newReference, newStamp)));

即在return执行方法,并获取最终结果。我编写了一段代码用以测试:

 1public class Main {
 2    public static void main(String[] args) {
 3        Main main = new Main();
 4        System.out.println(
 5                main.executeIsTrue()
 6        );
 7        System.out.println();
 8        System.out.println(
 9                main.executeIsFalse()
10        );
11    }
12
13    boolean executeIsTrue() {
14        return
15                //这行判断结果为True,可以执行say(String word)方法
16                (retTrue() && retTrue()) &&
17                        //上述两条都为True,则执行下面代码
18                        (print("OK"));
19    }
20
21    boolean executeIsFalse() {
22        return
23                //这行判断结果为False,不能执行say(String word)方法
24                (retTrue() && retFalse()) &&
25                       //上述两条都为True,则执行下面代码
26                        (print("OK"));
27    }
28
29    boolean retTrue() { return true; }
30    boolean retFalse() { return false; }
31
32    boolean print(String word) { System.out.println(word); return true; }
33}

得到返回结果:

1OK
2true
3
4false

摘自https://www.cnblogs.com/yxiaooutlook/p/7606277.html

1System.out.println(true && false); //结果为false  
2System.out.println(true && true); //结果为true  
3System.out.println(false && false); //结果为false  
4System.out.println(false && true); //结果为false

即充分利用判断运算符(&&、||)返回boolean的短路,实现在return中实现类似if语句的判断

如转载请在文章尾部添加

原作者来自 adlered 个人技术博客:https://www.stackoverflow.wiki/

评论

取消