javatruefalse_java–false和Boolean.FALSE有什么区别?见java valueof
Boolean.TRUE和Boolean.FALSE不是布尔值,它们是布尔值.它们是对应于布尔值true和false的两个布尔包装对象的静态实例.
布尔类似于枚举. TRUE和FALSE实例是由Boolean.valueOf()返回的实例.
⾄于原始与包装的性能;没有什么区别,你会需要担⼼. TRUE和FALSE静态实例有助于执⾏性能,因此,javadocs推荐使⽤Boolean.valueOf(),⽽不是新的布尔值(…).真假布尔值有⼀点“较低级别”,但是如果您将它们存储在布尔值(⽽不是布尔值)中,那么这是⽆关紧要的.
您应该使⽤对代码最有意义的任何⼀个,并导致最佳的可读性(并且绝对不会开始下降微型优化思想的路径,如原始和封装类型).如果您使⽤布尔值,请使⽤对象值.如果您使⽤布尔值,请使⽤原始值.如果您在布尔值与布尔值之间进⾏判断,请使⽤更合适的⽅法(例如布尔值可以为null,这可能是有⽤的,也可以不使⽤基本类型进⾏泛型类型参数;另⼀⽅⾯,布尔值不能为null,可能同样有⽤).
还要注意,⾃动拳击将原始类型转换为这两个静态布尔实例之⼀,例如:
Boolean a = true;
assert(a == Boolean.TRUE);
除此之外,由于你提到它:FALSE是在windows.h中定义的,其原因有两个:1)由于windows.h⾃C-only⽇起使⽤,C不具有本机bool类型,⽽2)是传统的Microsoft惯例,⽤已知的,明确的⼤⼩和值来定义数据类型和值,尤其是.⽤于将数据传递到跨越DLL边界的Windows API函数(超出此问题的范围),并与其他具有不同表⽰形式的“true”和“false”的语⾔集成.它与Java中Boolean.FALSE的原因完全⽆关.