当前位置:  开发笔记 > 编程语言 > 正文

Java中的布尔表达式

如何解决《Java中的布尔表达式》经验,为你挑选了3个好方法。

我对Java中的return语句中布尔变量的含义(评估)有疑问.

我知道:

if (var) { ... }

是相同的:

if (var==true) { ... }

在第二种情况下,我们明确地说var == true,但我们不需要这样做,因为无论如何Java都将var计算为true.我希望我理解这一点.

我的问题是:返回布尔变量时是否相同?当我们有退货声明?

例如,任务指定:方法LooksBetter()仅在b

public boolean looksBetter() {
     if (b < a) {
         return true;
     } else {
         return false;
     }
}

简单的答案是:

public boolean lookBetter() {
      return b < a;
}

因此,似乎在这里我们再次有这个隐含的假设,即在b

1> Rob Hruska..:


这不是一个"隐含的假设",而是编译器正在做的事情.的b < a,如果它被用于的只是一个表情,同样的if声明.表达式求值为a boolean,然后返回.

另外值得注意的是,你似乎互相交换boolean,Boolean好像它们是一样的,但它们实际上并非如此.boolean是原始形式,Boolean而是一个包装的对象boolean.


使用"基本相同的"方法的唯一问题是使用null.对象可以为null,原语不能.尝试自动取消装箱空.不完全明白异常意味着什么.

2> Bill Zeller..:

是的,所有布尔都是如此.您可以考虑if(表达式)评估'表达式'以查看它是'true'还是'false'.当你这样做

if(b < a == true)

它首先测试是否b

if(true == true)

它现在测试true == true(显然它确实如此).当你省去额外的'== true'时,Java没有做任何棘手的事情,它只需要少执行一次测试.没有理由你不能说:

if(((b < a == true) == true) == true)

但是每次看到等号时,它都会导致Java执行额外的测试.



3> Paul Tomblin..:

不要让代码复杂化.如果您觉得需要说"a ((((((((...(a"

"a 更布尔值的方式.

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有