如何检查int是否为null


110

我有一个名为的对象Person

它具有几个属性;

int id;
String name;

我将一个人对象设置为Person p = new Person(1,"Joe");

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

if (person == null){
}

Or


if(person.equals(null))

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

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

但是,java不允许这样做。我该如何检查?


10
不只是Java。基本类型在任何地方都不能为null。
罗希特·贾因

2
是啊,一个企业的默认值int0
沙龙Hwk

1
@沙龙 是的,它是0。因此,您可以使用进行检查0。如果要执行null检查。为此,请使用整数包装器。
罗希特·贾因

3
使用int表示识别码并不总是一个好主意,因为您没有将其用作真实数字-您不对其进行加,减或其他数学运算。考虑使用字符串代替。
气垫船充满鳗鱼

Answers:


184

An int不为null,0如果未初始化,则可能为null 。

如果希望整数可以为null,则需要使用Integer代替int

Integer id;
String name;

public Integer getId() { return id; }

另外该语句if(person.equals(null))不能为真,因为如果person为null,则将NullPointerException抛出a。所以正确的表达是if (person == null)


@sharonHwk“ person == null”应该是更好的选择。如果person为null,则没有“ equal”方法,然后抛出“ person.equals(null)”。
CodingFanSteve19年

“一个int不为null,如果未初始化,则可能为0。” 这不是100%正确,不会将int作为局部变量初始化。
Emerica '19

当然,由于局部变量不能被初始化,所以它是无效的代码,Java不允许这样做,正如其规范中所声明的那样。
Alex

48

原语不具有空值。默认的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;以下表达式正确吗?

if (person == null){
}

上面的代码检查person是否为空。你需要做

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

if(person.equals(null))

当person为null时,以上代码将引发NullPointerException。


谢谢,这非常有用。
沙龙Hwk

14

原语int不能为空。如果需要null,请Integer改用。


3

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

如果(人==空){}

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

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

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

由于id定义为原语int,它将默认使用初始化,0并且永远不会初始化null。如果原始类型为null,则无需检查它们。它们永远不会为空。如果你愿意,你可以比较的默认值0if(person.getId()==0){}


0

您必须访问您的班级属性。

要访问它的属性,您必须执行以下操作:

person.id
person.name

哪里

是您的类Person的一个实例。

如果可以访问服装,则可以执行此操作,否则,必须使用setter和getter。


@RohitJain我不是在说这个,我是说问person == nul是否不正确,如果他想知道id是否为“ null”。由于id是int的事实,他无法以您建议的方式询问…
melli-182

0

您可以使用

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

除了常规方法

person.getId() == 0

0

在Java中,原始数据类型没有Null值。如果需要检查Null,请使用Integer Class而不是原始类型。您无需担心数据类型的差异。Java将int基本类型数据转换为Integer。当涉及内存时,整数要比整数占用更多的内存。但是内存分配的差异,没有什么可考虑的。

在这种情况下,您必须使用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;
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.