java - 使用一元运算符之间的区别! if 语句中的 and (== false)

标签 java

我需要知道使用 ! 之间有什么区别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/

相关文章:

java - 按钮 onClickListener 和 textView.setText 在 AlertDialog 中不起作用

java - 如何防止关闭JFrame时在JFrame前面弹出JDialog?

java - 除某些项目外,按字母顺序对 Java 列表进行排序

java - 需要删除 HDFS 中的part-m-0000* 文件

java - JDBC URL 中的空格

java - Eclipse 内容协助不显示方法描述

java - 类、接口(interface)或枚举预期错误

java - jboss 7 记录器将相同的数据写入两个不同的文件

java - 如何让 Java 中的方法接受类类型变量?

java - 是否可以使用JAVA在32位系统上对3GB的java进行排序