考虑成员变量:
String foo;
setFoo
如果foo
以前没有设置或当前为空,我只想打电话。
为此,我不确定这是否足够:
if(foo==null || foo.isEmpty()) {
setFoo(foo);
}
或者在 OR 条件的另一边检查 null 是否更安全:
if(foo==null || (foo!=null && foo.isEmpty())) {
setFoo(foo);
}
if(foo==null || foo.isEmpty())
足够了。
在逻辑 OR 条件下,Java 只会在第一部分为假时评估第二部分。
不,第一个片段很好。
在 Java(以及许多类似的语言,如 C 或 C++)中,逻辑运算符&&
和||
执行短路评估。在 的情况下||
,如果左侧操作数是true
,则不会计算右侧操作数。
欢迎来到堆栈溢出
Java中的运算符是短路||
运算符,只有当第一部分不足以确定值时,才会检查表达式的第二部分&&
所以,if(foo==null || foo.isEmpty())
就足够了。
if (foo == null || foo.isEmpty()) setFoo(foo);
工作正常。在这种情况下,如果foo
为空,setFoo(foo)
将被调用。如果foo
不为空,并且foo
为空,setFoo(foo)
也将被调用。
我发现它使用起来更优雅StringUtils.isBlank(foo)
(来自 apache commons-lang),所以你不需要 || 一点也不。