Java null to int Conditional Operator issue

2022-09-03 07:37:43

可能的重复:
Java中棘手的三元运算符 - 自动装箱

我们知道编译器不允许这样做。int roomCode = null;

那么为什么代码 1 没有给出编译器错误,而代码 2 会给出。

代码 1:

int roomCode = (childCount == 0) ? 100 : null;

代码 2:

int roomCode = 0;
if(childCount == 0) roomCode = 100;
else roomCode = null; // Type mismatch: cannot convert from null to int

答案 1

我做了一些调试,发现在评估时

(childCount == 0) ? 100 : null;

程序调用 Integer 的方法来计算 .它返回一个整数,并且作为整数可以为空(而不是int),它进行编译。就好像你在做这样的事情:valueOfnull

int roomCode = new Integer(null);

因此,它与自动装箱有关。


答案 2

推荐