如何检查一个int是否为空

139

我有一个名为Person的对象。

它里面有几个属性;

int id;
String name;

我设置了一个人的对象,例如Person p = new Person(1,"Joe");

1.) 我需要检查对象是否不为空;以下表达式是否正确:

p != null

if (person == null){
}

Or


if(person.equals(null))

2.) 我需要知道该ID是否包含整数。

if(person.getId()==null){} 

但是,Java 不允许这样做。我该如何进行此检查?


11
不仅是Java。原始类型在任何地方都不能为null。 - Rohit Jain
2
是的,int 的默认值是 0 吗? - Sharon Watinsan
2
@sharon。是的,它是0。因此,您可以使用0进行检查。如果要进行空值检查,请使用Integer包装器。 - Rohit Jain
3
使用int来表示识别码并不总是一个好主意,因为你并不会将其作为真正的数字使用——你没有执行加法、减法或其他数学运算。考虑使用String代替。 - Hovercraft Full Of Eels
8个回答

231

int不是null,如果未初始化可能为0

如果想让整数能够为null,则需要使用Integer而不是int

Integer id;
String name;

public Integer getId() { return id; }
此外,表达式 if(person.equals(null)) 不可能成立,因为如果 person 是 null,则会抛出 NullPointerException。所以正确的表达式是 if (person == null)

@sharonHwk "person == null" 应该是更好的选择。如果 person 为空,它将没有一个 "equal" 方法,那么 "person.equals(null)" 将会抛出异常。 - CodingFanSteve
1
一个int不是null,如果没有初始化,它可能是0。但是作为局部变量的int将不会被初始化。 - Emeric
1
当然,对于本地变量而言,不能未初始化,这是无效的代码,Java不允许它,正如其规范所声明的那样。 - Alex

53

基本数据类型没有null值。int类型的默认值是0。

if(person.getId()==0){}

Java中原始类型的默认值:

Data Type   Default Value (for fields)

byte                0
short               0
int                 0
long            0L
float           0.0f
double          0.0d
char            '\u0000'
boolean         false

对象默认值为null。

字符串(或任何对象)---> null

1.) 我需要检查对象是否不为null;以下表达式正确吗?

我需要检查对象是否不为null;以下表达式正确吗:

if (person == null){
}

上面的代码片段检查了person是否为null。你需要进行:

if (person != null){ // checks if person is not null
}

if(person.equals(null))

当person为空时,上述代码将抛出NullPointerException的异常。


21

一个基本的 int 不能为null。如果你需要null,请使用Integer


3

1.) 我需要检查对象是否为null;以下表达式正确吗:

if (person == null){ }

是的。这是您检查对象是否为null的方法。

2.)我需要知道ID是否包含Int。

if(person.getId()==null){}

不是的。由于id被定义为原始类型int,它将以默认方式初始化为0,永远不会为null。没有必要检查原始类型是否为null。它们永远不会为null。如果您想要的话,可以将其与默认值0进行比较,如if(person.getId()==0){}


1
编译器不允许将int的值赋为null。这样就无法运行。 因此我们可以说它已经在某种程度上为您解决了问题。

0

你必须访问你的类属性。

要访问它的属性,你需要执行以下操作:

person.id
person.name

在你的类Person中,

person

是一个实例。

如果可以访问属性,则可以这样做,否则必须使用setter和getter...


@RohitJain 我不是在说那个,我是在说如果他想知道id是否为“null”,那么询问person==nul是不正确的。由于id是一个整数,他不能按照你建议的方式进行询问... - melli-182

0
在Java中,原始数据类型没有空值。 如果需要检查Null,请使用Integer类而不是原始类型。您不需要担心数据类型差异。Java将int原始类型数据转换为Integer。 当涉及到内存时,Integer比int占用更多的内存。但是,在内存分配方面的差异,无需考虑。
在这种情况下,您必须使用Inter而不是int。
尝试下面的代码片段并查看更多信息的示例:
Integer id;
String name;

//Refer this example
    Integer val = 0;

`

if (val != null){
System.out.println("value is not null");
}

`

你也可以像下面这样分配 Null:

val = null;

-1

你可以使用

if (person == null || String.valueOf(person.getId() == null)) 

除了常规方法之外

person.getId() == 0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接