假设我有这样一个对象:
Public Class Test{
int a;
}
在我的程序中的某个时刻,我想检查是否设置了属性 a。我知道如果我使用 Integer 而不是 int 作为属性的类型,我可以这样做:
if(test.a!=null)
...;
但是如果我将 int 保留在那里并使用它来检查会怎样:
if(test.a!=0)
...;
一个问题是我无法区分零值和未设置的值,但在我的程序中它们是相同的,因为有效值都不同于 0。此外,使用 int 简化了我需要的事情稍后再做,比如使用 == 进行比较。
那么在这里使用 int 会好吗,还是总是首选 Integer?
最佳答案
这完全取决于您,两者都可以(前提是“unset”和 0
really 在您的程序中表示相同的内容)。我意识到这不是一个很好的答案,但这是事实。 :-) 如果“未设置”和 0
不是同一个意思,那将更强烈地支持 Integer
,因此您可以正确地区分它们。
在下方回复您的评论:
I just wanted confirmation that an unset int will always be equal to
0
是的,int
始终初始化为 0
,根据 Section 4.12.5 of the JLS .
关于Java:检查是否使用 int 和 Integer 设置了属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13209559/