Java null to int Conditional Operator问题

时间:2012-02-23 05:49:31

标签: java int autoboxing

  

可能重复:
  Tricky ternary operator in Java - autoboxing

我们知道编译器不允许int roomCode = null;

然后,当代码2执行时,为什么代码1不会给出编译器错误。

代码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 个答案:

答案 0 :(得分:11)

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

(childCount == 0) ? 100 : null;

程序调用Integer的方法valueOf来评估null。它返回一个Integer,并且作为一个Integer可以为null(而不是int),它会编译。好像你做的那样:

int roomCode = new Integer(null);

因此它与自动装箱有关。