当前位置: 首页 > 知识库问答 >
问题:

false和Boolean之间的区别是什么。错误的

钱毅
2023-03-14

在Cwindows中。h FALSE被定义为整数,这对于某些特殊的逻辑情况是有意义的,但在JavaJava中。lang.Boolean。FALSE定义为布尔值,并指定给FALSE
公共静态最终布尔值FALSE,我见过一些人使用它。

我的问题是:falseBoolean之间是否存在性能差异。错误?总的来说,人们为什么选择布尔型。错误

共有3个答案

范志勇
2023-03-14

Boolean在需要三态变量时非常方便。

此外,您可能还想看看这个自动装箱和拆箱教程,以及它是如何工作的规则。

东门理
2023-03-14

false是一个原语和布尔值。FALSE是一个对象,因此它们实际上不具有可比性。

如果将false赋值给Boolean变量,如下所示:

Boolean b = false;

Java的自动装箱发生在将原语转换为对象时,因此false值丢失,最终得到布尔值。还是FALSE

就性能而言,使用原语变量的性能略优于使用包装器布尔对象的性能,但您的选择应该基于可读性和基本设计决策,而不是“性能”。

王兴腾
2023-03-14

看http://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html.

布尔值。TRUE布尔值。FALSE不是布尔值,它们是布尔值。它们是两个布尔包装对象的静态实例,对应于布尔值true和false。

布尔值类似于枚举。TRUEFALSE实例是由Boolean.valueOf()返回的实例。

至于原语与包装器的性能;没有什么区别是你需要关心的。TRUEFALSE静态实例有助于提高性能,javadocs建议使用Boolean。valueOf()与新布尔值(…)相反 true和false布尔值有点“低级”,但如果将它们存储在boolean(与boolean相反)中,则无论如何都是无关紧要的。

您应该使用对您的代码最有意义并导致最佳可读性的任何工具(绝对不要开始考虑像原始与包装类型这样的微优化)。如果使用的是Boolean,则使用对象值。如果您使用的是布尔值,请使用基元值。如果要在Booleanvsboolean之间做出决定,请使用任何更合适的方法(例如,布尔类型可以是null,这可能很有用,并且您也不能将基元类型用于泛型类型参数;另一方面,布尔值永远不能为空,这可能同样有用)。

还请注意,自动装箱将基元类型转换为这两个静态布尔实例之一,例如:

Boolean a = true;
assert(a == Boolean.TRUE);

顺便说一句,既然你提到了:FALSE是在windowsh中定义的,原因有两个: 1)因为windowsh从只有C的日子起就开始使用了,而且C没有本机的bool类型,和2)传统的微软做法是定义具有已知的显式大小和值的数据类型和值,特别是。跨DLL边界(超出本问题的范围)将数据传递给Windows应用编程接口函数,并与具有不同功能的其他语言集成“真”和“假”的表示。它与布尔值的原因完全无关。FALSE在Java。

 类似资料:
  • 问题内容: 我想了解Java中和类型之间的区别,特别是它们与GWT有关。我知道不支持该方法,但是如果需要的话,我需要更多信息。 问题答案: 我不确定GWT因素是否有所不同,但总的来说: 布尔值 是Java基本类型,而 布尔值 是包装布尔值的对象/引用类型 像这样在图元和对象之间进行转换称为装箱/拆箱。 这是更多信息: http://javaeye.wordpress.com/2008/06/17/

  • 问题内容: 如何区分Java中的错误和异常? 问题答案: 错误“表示合理的应用程序不应尝试捕获的严重问题”。 而 异常“指示合理的应用程序可能想要捕获的条件”。 错误及其子类都是例外。所有其他异常类都是异常。 检查 异常通常是程序可以从中恢复的异常,最好以编程方式从此类异常中恢复。示例包括,等。希望程序员使用try- catch块检查这些异常,或者将其扔回调用方。 另一方面,我们有 未经检查的 异

  • 在Java 7之前,JVM内存中有一个名为PermGen的区域,JVM以前在这里保存它的类。在Java 8中,它被移除并被称为元空间的区域所取代。 PermGen和Metaspace之间最重要的区别是什么? 我知道的唯一区别是,并且忽略了VM参数。

  • 和之间有什么区别? 是什么原因导致他们被扔?如何解决这些问题? 在修改现有代码以包含新的jar文件时,我经常会遇到这些可抛物。我在通过WebStart发布的一个Java应用程序的客户端和服务器端都碰到了它们。 我遇到的可能原因是: 代码客户端的中未包含的包 我们正在使用的新JAR缺少运行时类路径 版本与以前的JAR冲突 当我今天遇到这些问题时,我会采取跟踪和错误的方法来使事情正常工作。我需要更多的

  • 当我试图在Spring4.x上进行测试时,我使用了MockMvc web客户端,但我正在阅读和尝试Spring5.x的新特性。 我认为,WebTestClient和MockMvc是相同或非常相似的。 MockMvc和WebTestClient之间的区别是什么?

  • 有人能给我解释一下map和flatMap之间的区别,以及什么是各自的好用例吗? “结果扁平化”是什么意思?它有什么好处?