Java:检查属性是否使用int和Integer设置

Dan*_*cco 3 java types

假设我有一个这样的对象:

Public Class Test{
    int a;
}
Run Code Online (Sandbox Code Playgroud)

在我的程序中的某个时刻,我想检查是否设置了属性a.我知道,如果我用了不是int,因为我可以做类似属性的整数类型:

if(test.a!=null)
    ...;
Run Code Online (Sandbox Code Playgroud)

但是如果我将int保留在那里并使用它来检查:

if(test.a!=0)
    ...;
Run Code Online (Sandbox Code Playgroud)

一个问题是我无法区分零值和未设置值,但在我的程序中它们是相同的,因为有效值都不同于0.此外,使用int简化了我以后需要做的事情在,比如使用==.

那么在这里使用int会没用,或者总是首选Integer?

T.J*_*der 6

这完全取决于你,要么很好(提供"未设置"并且在你的程序中0 真的意味着同样的事情).我意识到这不是一个答案,但这是事实.:-)如果"未设置"并且0意思不一样,那就更强烈地争论,Integer以便你可以正确地区分它们.

你的评论如下:

我只是想确认unset int总是等于 0

是的,int总是被初始化为0,每JLS的第4.12.5.