码迷,mamicode.com
首页 > 其他好文 > 详细

巧妙运用 按位或“|” 运算

时间:2017-10-18 00:08:36      阅读:595      评论:0      收藏:0      [点我收藏+]

标签:进制   col   ram   简写   bool   turn   数列   logs   temp   

“按位或” 运算的巧妙运用

今天在学习Collections的源码时,看到下面的代码,联系之前自己写的程序,感受到下面这段代码确实巧妙:

1     public static <T> boolean addAll(Collection<? super T> c, T... elements) {
2         boolean result = false;
3         for (T element : elements)
4             result |= c.add(element);
5         return result;
6     }

下面简单介绍:

“T... elements” :可变参数列表,元素为泛型T或T的子类。

“|=”:这是类似于“+=”这样的运算式,是A = A + B这种形式的简写A+=B;它们是等价的。或“|”运算,二进制运算是同“0”为“0”,否则为“1”。逻辑或“|”,同假为假否则为真。

1 false |= false  =>  结果为false2 true |= false   =>  结果为true;
3 false |= true   =>  结果为true;
4 true |= true    =>  结果为true;

在第一段代码中,2号 boolean result = false; 通过后面的运算,只要有一次c.add(element)的运算其中一次返回true,则整个方法的返回值就是true.——个人感觉精妙之处在于此(略显少见多怪)

延伸

若我们的需求为:只要有一次失败,整体返回失败。只要有一次为假,则都为假。

1     public boolean change(boolean... params){
2         boolean result = true;
3         for (boolean temp : params) {
4             result = result && temp;
5         }
6         return result;
7     }

 

巧妙运用 按位或“|” 运算

标签:进制   col   ram   简写   bool   turn   数列   logs   temp   

原文地址:http://www.cnblogs.com/bridgestone29-08/p/7684390.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!