faq*_*faq 34 java boolean inverse
如果你有一个布尔变量:
boolean myBool = true;
Run Code Online (Sandbox Code Playgroud)
我可以通过if/else子句获得相反的结果:
if (myBool == true)
myBool = false;
else
myBool = true;
Run Code Online (Sandbox Code Playgroud)
有没有更简洁的方法来做到这一点?
Bol*_*ock 92
刚分配使用逻辑运算符不!喜欢你往往会在你的条件语句(做if,for,while...).你已经使用了一个布尔值,所以它会翻转true到false(反之亦然):
myBool = !myBool;
Run Code Online (Sandbox Code Playgroud)
for*_*ran 41
更酷的方式(myBool = !myBool如果要设置变量,则比长度超过4个字符的变量名称更简洁):
myBool ^= true;
Run Code Online (Sandbox Code Playgroud)
顺便说一句,不要使用if (something == true),如果你这样做就更简单if (something)(与false相比,使用否定运算符).
bvd*_*vdb 13
对于boolean它来说非常简单,一个Boolean更具挑战性.
boolean只有两种可能的状态:
true和false.Boolean在另一方面,具有3: Boolean.TRUE,
Boolean.FALSE或null.假设您只是处理a boolean(这是一种原始类型),那么最简单的方法是:
boolean someValue = true; // or false
boolean negative = !someValue;
Run Code Online (Sandbox Code Playgroud)
但是,如果要反转a Boolean(对象),则必须注意该null值,否则最终可能会出现NullPointerException.
Boolean someValue = null;
Boolean negativeObj = !someValue.booleanValue(); --> throws NullPointerException.
Run Code Online (Sandbox Code Playgroud)
假设此值永远不为null,并且您的公司或组织没有针对自动(非)装箱的代码规则.实际上你可以把它写成一行.
Boolean someValue = Boolean.TRUE; // or Boolean.FALSE
Boolean negativeObj = !someValue;
Run Code Online (Sandbox Code Playgroud)
但是,如果您确实想要处理这些null值.然后有几种解释.
boolean negative = !Boolean.TRUE.equals(someValue); //--> this assumes that the inverse of NULL should be TRUE.
// if you want to convert it back to a Boolean object, then add the following.
Boolean negativeObj = Boolean.valueOf(negative);
Run Code Online (Sandbox Code Playgroud)
另一方面,如果你想在反演后null留下来null,那么你可能要考虑使用apache commons该类BooleanUtils(参见javadoc)
Boolean someValue = null; // or Boolean.TRUE or Boolean.FALSE;
Boolean negativeObj = BooleanUtils.negate(someValue);
Run Code Online (Sandbox Code Playgroud)
有些人宁愿把它全部写出来,以避免产生apache依赖.
Boolean someValue = null; // or Boolean.TRUE or Boolean.FALSE;
boolean negative = (someValue == null)? null : !someValue.booleanValue();
Boolean negativeObj = Boolean.valueOf(negative);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42285 次 |
| 最近记录: |