我们不能将int downcast到boolean吗?

das*_*dsa 1 java

按我的理解,0被视为int第1行,这就是为什么分配默认intboolean是给编译时错误.这是对的吗?另外,为什么它会在第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);
  }
}
Run Code Online (Sandbox Code Playgroud)

Bat*_*eba 10

Java不支持转换intboolean.这是因为a boolean不是Java中的数字类型.

惯用的方法是编写表单的代码

boolean b = n != 0;

其中n是数字类型.

这在JLS§4.2.5有所涉及:

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

...

boolean值可以被转换为类型boolean,BooleanObject(§5.5).不允许其他任何类型的强制转换boolean.