博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
巧妙运用 按位或“|” 运算
阅读量:4507 次
发布时间:2019-06-08

本文共 1303 字,大约阅读时间需要 4 分钟。

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

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

1     public static 
boolean addAll(Collection
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  =>  结果为false;2 true |= false   =>  结果为true;3 false |= true   =>  结果为true;4 true |= true    =>  结果为true;

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

延伸

逻辑与“&&” 运算

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

1 public class Test { 2  3     public static boolean change(boolean... params){ 4         boolean result = true; 5         for (boolean temp : params) { 6             result = result && temp; 7         } 8         return result; 9     }10     11     public static void main(String[] args) {12         System.out.println(Test.change(true, false));        // false13         System.out.println(Test.change(false, false));       // false14         System.out.println(Test.change(true, true));         // true15     }16 }

 

转载于:https://www.cnblogs.com/bridgestone29-08/p/7684390.html

你可能感兴趣的文章
周总结报告
查看>>
Selecting Courses POJ - 2239(我是沙雕吧 按时间点建边 || 匹配水题)
查看>>
Win+R指令(2)
查看>>
codeforces 578c - weekness and poorness - 三分
查看>>
数值微分方程
查看>>
动态规划--电路布线(circuit layout)
查看>>
<转>OD常用断点列表
查看>>
描边时消除锯齿SetSmoothingMode
查看>>
15回文相关问题
查看>>
将VS2013项目转成VS2010项目的方法
查看>>
[置顶] 怎么对待重复的代码
查看>>
多种方法实现H5网页图片动画效果;
查看>>
Ubuntu/CentOS下使用脚本自动安装 Docker
查看>>
源码解读Mybatis List列表In查询实现的注意事项
查看>>
POJ 2311 Cutting Game(二维SG+Multi-Nim)
查看>>
1978 Fibonacci数列 3
查看>>
1225 八数码难题
查看>>
C#控件的闪烁问题解决方法总结
查看>>
js 冒泡事件与解决冒泡事件
查看>>
2018-2019赛季多校联合新生训练赛第七场(2018/12/16)补题题解
查看>>