-6

避免if用于nullJava检查的多个块的最佳方法是什么?

以下是我的示例代码。哪一种是最优化的方式?

if (address!=null} {
    if (firstName!=null) {
        if (lastName!=null) {

        }
    }
}
4

6 回答 6

10

使用&&. &&是逻辑和。&&组合两个值并返回一个布尔值,当且仅当其两个操作数都为真时,该布尔值才为真

if(address!=null && firstName!=null && lastName!=null)
{
}

例如

boolean b;
b = 3 > 2 && 5 < 7; // b is true
b = 2 > 3 && 5 < 7; // b is now false
于 2013-05-07T05:59:24.587 回答
7

使用和运算符 (&&)

   if(address!=null && firstName!=null && lastName!=null) 
    {
      //DoSomething here 
    }

我建议你看看 短路评估

于 2013-05-07T05:59:05.937 回答
7

if loop是一个错误的词。你应该说if statements
在你的情况下你可以像这样使用 OR (||) 或 AND (&&) 语句

if(address!=null && firstName!=null && lastName!=null)
{
}


尝试AND(&&)是否要通过所有检查或嵌套 if 语句并尝试OR(||)非嵌套 likeelse if或简单地说是否要通过任何条件

但是如果所有这些都是字符串,那么您应该像这样尝试
"yourValue".equals(stringValue)
这将跳过 null查看。

于 2013-05-07T05:59:43.103 回答
3

没有 if LOOPS

boolean complete = address != null && firstName != null && lastName != null;
if (complete) 
{
}
于 2013-05-07T06:00:22.650 回答
1

关于什么:

public boolean notNulls(Object ... args) {
    for(Object arg : args)
        if (arg == null) return false;
    return true;
}

利用:

if (notNulls(address, firstName, lastName)) {
    // do something
}
于 2013-05-07T06:06:22.507 回答
-1

正如其他人指出的那样,逻辑和 (&&) 可能是巩固逻辑的最佳方式。true只有当双方都评估为 时,&& 操作才会评估为true

if (address != null && firstName != null && lastName != null) {
    // Whatever you want to do with that...
} else {
    // Whatever you want to do with bad input
}

为了多样性,您还可以使用 try-catch 方法。在 Java 中,如果您尝试对 null 值调用方法,则会引发 NullPointerException,您可以捕获并处理该方法。

try {
    // Whatever you want to do with that...
} catch (NullPointerException npe) {
    // Whatever you want to do with bad input
}

如果您有大量可能为空的输入,这种方法会很有帮助,尽管总的来说我不提倡这样做。(第二种方法的问题是,如果您从try触发 NullPointerException 的部分调用其他方法,它将最终出现在catch此处的块中,即使它可能与这些输入完全无关 - 即您可能很难自己发现程序不同部分的错误。)

于 2013-05-07T06:11:03.057 回答