我需要知道使用 ! 之间有什么区别if 语句中的运算符和 ==false。
我知道两者的输出是相同的。我希望了解内部 jvm 性能或使用此类错误值的任何内存使用情况。
通过使用 !运算符
if(!MyUtil.isFieldEmpty(String value)){
System.Out.println("Not Empty");
}
通过使用 ==false
if(MyUtil.isFieldEmpty(String value) == false){
System.Out.println("Not Empty");
}
MyUtil.java
public static boolean isFieldEmpty(String value){
if ((value == null) || (value.trim().length() == 0) || value.equals("null")) {
return true;
} else {
return false;
}
}
谢谢!!!
最佳答案
就性能而言,可能(或可能没有,很可能没有)有利于使用更简单的方法(即不包括 ==
) 形式。否则,它们实际上是相同的。
但这实际上不是重点。
以 if(booleanMethod() == true|false)
的形式编写 boolean 表达式完全是多余的。这会降低某些方面的可读性,引入不必要的代码和评估语句,大多数现代 IDE/Java 风格检查器都会提示这样的表达式。
例如,PMD会提示这是“SimplifyBooleanExpressions”的情况。
如果您的左侧表达式是 boolean 值,并且您需要只是一个 boolean 值,那么只需使用左侧表达式即可。 !MyUtil.isFieldEmpty(String value)
完全可以接受。
此外,顺便说一句,您的 boolean 方法也可以进行一些重构。归结起来是这样的:
public static boolean isFieldEmpty(String value) {
return (value == null) || (value.trim().length() == 0) || value.equals("null");
}
这是出于同样的原因:冗余。你基本上是在说,“如果这是真的,或者这是真的,或者这是真的,那么返回 true。”事实证明,这只是表达式自然求值的结果。
为什么不直接返回表达式的结果呢? PMD会认为这是“SimplifyBooleanReturns”的情况。
关于java - 使用一元运算符之间的区别! if 语句中的 and (== false),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21300023/