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にできません。
Rohit Jain

2
ええ、のデフォルト値int0
シャロンHwk

1
@sharon。はい、それは0です。したがって、0代わりにでチェックを行うことができます。nullチェックを実行する場合。整数ラッパーを使用してください。
Rohit Jain

3
識別コードを表すためにintを使用することは、それを真の数として使用していないため、常に良い考えではありません。これを使用して、加算や減算、その他の数学演算を行うことはありません。代わりに文字列の使用を検討してください。
うなぎいっぱいのホバークラフト

回答:


184

intnullではない、それはかもしれ0初期化されていない場合。

整数をnullにできるようにするには、のInteger代わりにを使用する必要がありますint

Integer id;
String name;

public Integer getId() { return id; }

また、if(person.equals(null))if personがnullの場合、a NullPointerExceptionがスローされるため、ステートメントをtrueにすることはできません。だから正しい表現はif (person == null)


@sharonHwk "person == null"の方が適切なオプションです。personがnullの場合、「equal」メソッドはないため、「person.equals(null)」がスローされます。
CodingFanSteve

「intはnullではありません。初期化されていない場合は0になる場合があります。」100%正しくありません。ローカル変数としてのintは初期化されません。
Emerica

もちろん、ローカル変数は初期化解除できないため、無効なコードであり、Javaは仕様で宣言されているようにそれを許可しません。
アレックス

48

プリミティブにはnull値はありません。intのデフォルトのhaveは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がnullかどうかをチェックします。あなたがする必要があります

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

そして

if(person.equals(null))

上記のコードは、personがnullの場合にNullPointerExceptionをスローします。


ありがとう、これはとても便利です。
シャロンHwk

14

プリミティブintをnullにすることはできません。nullが必要な場合は、Integer代わりに使用してください。


3

1.)オブジェクトがnullでないかどうかを確認する必要があります。次の式は正しいですか。

if(person == null){}

はい。これは、オブジェクトがかどうかを確認する方法ですnull

2.)IDにIntが含まれているかどうかを知る必要があります。

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

NOidはプリミティブとして定義されているためint、デフォルトで初期化され0、決して初期化されませんnull。プリミティブ型がnullの場合、それらをチェックする必要はありません。それらがnullになることはありません。必要に応じて、デフォルト値0と比較できますif(person.getId()==0){}


0

クラスの属性にアクセスする必要があります。

属性にアクセスするには、次のことを行う必要があります。

person.id
person.name

どこ

クラスPersonのインスタンスです。

これは、属性にアクセスできる場合は実行できますが、アクセスできない場合は、セッターとゲッターを使用する必要があります...


@RohitJain私はそれを言っていません、彼がidが「null」であるかどうか知りたい場合はperson == nulを求めるのは正しくないことを言っています。idがintであるという事実により、彼はあなたが提案している方法で尋ねることができません...
melli-182

0

使用できます

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

通常のアプローチに加えて

person.getId() == 0

0

Javaでは、プリミティブデータ型にNull値はありません。Nullをチェックする必要がある場合は、プリミティブ型の代わりに整数クラスを使用してください。データ型の違いを心配する必要はありません。Javaは、intプリミティブ型データをIntegerに変換します。メモリに関しては、整数は整数より多くのメモリを必要とします。しかし、メモリ割り当ての違いは考慮されません。

この場合、intの代わりにInterを使用する必要があります

以下のスニペットを試して、詳細については例を参照してください。

Integer id;
String name;

//Refer this example
    Integer val = 0;

`

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

`

また、以下のようにNullを割り当てることができます。

val = null;
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.