gpt4 book ai didi

java - 三元表达式可以在没有编译器错误的情况下产生空 boolean 值?

转载 作者:搜寻专家 更新时间:2023-11-01 03:46:19 25 4
gpt4 key购买 nike

<分区>

给定以下代码:

boolean c = true;
boolean d = true;
boolean b = c ? null : d;

System.out.println(b);

为什么编译器不在这里提示?变量 b 是原始数据类型,null 不应该产生类似“类型不匹配:无法从 null 转换为 boolean 值”的错误消息吗?

我最好的猜测是,正在进行一些自动装箱?我在一个项目中看到了这段代码,但我很想知道这背后的确切原因......

编辑1:正如 Mena 在下面指出的那样,这段代码在运行时产生了一个 NullPointer

编辑 2:下面的形式也编译没有错误:

boolean c = false;
boolean d = true;
boolean b = c ? null : d;

System.out.println(b);

编辑 3:当尝试使用编译器级别 1.4 进行编译时,这不会编译,但会产生错误:

Incompatible conditional operand types null and boolean.

所以自动装箱是有意义的,因为它是在 1.5 中引入的?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com