繁体   English   中英

我们不能将int转换为boolean吗?

[英]Can't we downcast int to boolean?

根据我的理解,默认情况下,第1行将0视为int 。这就是为什么将int分配给boolean会导致编译时错误。 这是正确的吗? 同样,为什么即使在显式向下转换的情况下,第2行也会产生编译错误?

public class HelloWorld
{
   public static void main(String[] args)
  {
    boolean b = 0;         //1.compile time error
    boolean b = (boolean)0;//2.still compile time error
    System.out.print(b);
  }
}

Java不支持从intboolean转换。 这是因为在Java中, boolean不是数字类型。

惯用的方式是编写以下形式的代码

boolean b = n != 0;

其中n是数字类型。

JLS§4.2.5对此进行了介绍

遵循C语言约定(任何非零值均为true),可以通过表达式x!=0将整数或浮点表达式x转换为布尔值。

...

boolean值可以强制转换为booleanBooleanObject (第5.5节)类型。 不允许在boolean类型上进行其他强制类型转换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM