Java Boolean方法返回



我在我的Java程序中有一个布尔方法,我想知道为什么Netbeans建议将此更改为我的代码:

return isPrime != 0;

我写的是:

if (isPrime == 0) {
            return false;
        }
        else{
            return true;
        }

两者都可以正常工作,但我无法理解Netbeans更改背后的逻辑。既不是对还是错。有人可以向我解释这背后的逻辑吗?谢谢

netbeans是完全正确的。表达式是布尔值。您可以通过进行更改并尝试一下轻松证明它。

0 != 0评估什么值?(提示:是false)。1 != 0呢?(提示:是true)。

这不是您更详细的代码所说的?

而不是

if (isPrime == 0) {
    return false;
} else {
    return true;
}

尝试

return (isPrime != 0);

是同一回事,我将向您展示重构路径。从

开始
if (isPrime == 0) {
    return false;
} else {
    return true;
}

相同
if (isPrime != 0) {
    return true;
} else {
    return false;
}

可以通过替换来降低,用函数'doisprime()'iSprime!= 0''

private boolean doIsPrime() {
   return isPrime != 0;
}

代替

if (doIsPrime()) {
    // guaranteed to be the same as above!
    return doIsPrime();
} else {
    return doIsPrime();
}

可以减少两个块(作为重复的代码)

if (doIsPrime()) {
}
return doIsPrime();

并通过删除空块周围的if语句

来进一步减少
return doIsPrime();

现在取消替换'doisprime()'回到'isprime!= 0'

return isPrime != 0;

无需真正替代。但是,我发现它更好地展示了if语句是多余的原因。

尚未返回对还是错。

false。比较isPrime != 0的结果,返回booleantruefalse

有人可以向我解释这背后的逻辑吗?

第一个代码等效于第二代码。如果isPrime0,则返回false,否则返回true。如果isPrime0,则!=操作员将产生false,而true如果不是0

它意味着它返回Predicat isPrime != 0的结果如果isprime = 0,则序言为false,因此返回false如果是isprime!= 0,则predicat是正确的,因此返回true

它只是为了减少代码。

表达式isPrime != 0返回布尔值。如果isPrime == 0且如果isPrime != 0为true,则是错误的。因此,您可以保存IF语句和一些代码行。

只是为了添加已经说的话:

尽管您的解决方案和NetBeans建议的方法是完全正确的,但另一种方法也是:

if (isPrime == 0) {
    return false;
}
return true;

我不知道Netbeans通过这种方法会暗示什么,但我想它会提出与上面相同的建议。

相关内容

  • 没有找到相关文章