假设我有一个这样的对象:
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?
这完全取决于你,要么很好(提供"未设置"并且在你的程序中0 真的意味着同样的事情).我意识到这不是一个答案,但这是事实.:-)如果"未设置"并且0意思不一样,那就更强烈地争论,Integer以便你可以正确地区分它们.
你的评论如下:
我只是想确认unset int总是等于
0
是的,int总是被初始化为0,每JLS的第4.12.5.