Java中的int可以为null吗?

问题

Java中的aintbenull可以吗?

例如:

int data = check(Node root);

if ( data == null ) {
 // do something
} else {
 // do something
}

我的目标是编写一个函数,返回一个int。 Saidint存储在节点的高度,如果节点不存在,它将为null,我需要检查它。

我这样做是为了完成家庭作业,但这个特定的部分不是作业的一部分,它只是帮助我完成我正在做的事情。

感谢你的评论,但似乎很少有人真正阅读过代码中的内容,我在问我还能如何实现这一目标;很容易弄清楚它不起作用。


#1 热门回答(164 赞)

int不能为null,但是Integer可以。拆箱null整数时你需要小心,因为这会引起很多混乱和头疼!

例如这个:

int a = object.getA(); // getA returns a null Integer

会给你aNullPointerException,尽管对象不是空的!

要跟进你的问题,如果你想表明价值的存在,我会调查java.util.Optional<Integer>


#2 热门回答(35 赞)

不可以。只有对象引用可以为null,而不是原语。


#3 热门回答(27 赞)

一个很好的方法来找出:

public static void main(String args[]) {
    int i = null;
}

尝试编译。