java - 设置 boolean 值之前进行控制?

标签 java boolean controls

抱歉,如果这是一个愚蠢的问题,但我对 Java 编程还很陌生。

我在线程中存储了一个 boolean 值,但我不知道它是 true 还是 false。

我有一个设置 boolean 值true的方法setBooleanTrue(),但是如果 boolean 值已经是true怎么办?它将再次将 boolean 值设置为 true

因此我想问你是否应该添加以下控件:

if(!testboolean)
    testboolean=true;

谢谢。

最佳答案

如果您对添加条件节省的时间感兴趣,请查看以下内容:

下面我写出了您的代码的两个版本,以及相应的生成的 java 字节码。

 boolean b = true;
 if(!b)
      b=true;

 0: iconst_1
 1: istore_1
 2: iload_1
 3: ifne
 6: iconst_1
 7: istore_1
 8: return


 boolean b = true;
 b=true;

 0: iconst_1
 1: istore_1
 2: iconst_1
 3: istore_1
 4: return

如您所见,直接重新分配boolean会生成更少的字节码。

乍一看,这似乎是答案。不幸的是,事情并没有那么简单。看看运行时环境做了这个名为 branch prediction 的奇特事情。 。如果连续运行一行代码,JVM 将尝试“预测”条件的结果。

这可能是一件非常好的事情,也可能是一件非常糟糕的事情。您对 boolean 值的期望值、快速连续检查的次数以及它是否可能通过多次调用保持某个值将决定您是否应该添加条件语句。

关于java - 设置 boolean 值之前进行控制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43915251/

相关文章:

java - 为什么以下语句返回 true?

clojure - 限制更新频率的想法

java - 如何使用mybatis按参数分组

java - Jackson YAML 序列化 - 防止多行写入

java - Gradle:如何编译使用 com.sun.xml.internal.bind.* 的类?

java - 如何用三路 boolean 强制转换来覆盖 Tapestry 的两路 boolean 强制转换?

java - 约束必须是字符串(或 null)

angular - RadioButton ngmodel 不适用于 boolean 值

.net - 确保创建的每个控件在 .NET 中都有一个句柄有什么副作用?

javascript - Javascript 中的 HTML 行 Controller