4

考虑成员变量:

String foo;

setFoo如果foo以前没有设置或当前为空,我只想打电话。

为此,我不确定这是否足够:

if(foo==null || foo.isEmpty()) {

  setFoo(foo);

}

或者在 OR 条件的另一边检查 null 是否更安全:

if(foo==null || (foo!=null && foo.isEmpty())) {

  setFoo(foo);

}
4

5 回答 5

12

if(foo==null || foo.isEmpty())足够了。

在逻辑 OR 条件下,Java 只会在第一部分为假时评估第二部分。

于 2011-09-04T18:28:13.090 回答
4

不,第一个片段很好。

在 Java(以及许多类似的语言,如 C 或 C++)中,逻辑运算符&&||执行短路评估。在 的情况下||,如果左侧操作数是true,则不会计算右侧操作数。

于 2011-09-04T18:27:55.693 回答
2

欢迎来到堆栈溢出

Java中的运算符是短路||运算,只有当第一部分不足以确定值时,才会检查表达式的第二部分&&

所以,if(foo==null || foo.isEmpty())就足够了。

于 2011-09-04T18:39:24.343 回答
0
if (foo == null || foo.isEmpty()) setFoo(foo);

工作正常。在这种情况下,如果foo为空,setFoo(foo)将被调用。如果foo不为空,并且foo为空,setFoo(foo)也将被调用。

于 2011-09-04T18:27:54.807 回答
0

我发现它使用起来更优雅StringUtils.isBlank(foo)(来自 apache commons-lang),所以你不需要 || 一点也不。

于 2011-09-04T18:41:44.367 回答