Bagaimana cara memeriksa apakah int adalah null

110

Aku punya benda bernama Person.

itu memiliki beberapa atribut di dalamnya;

int id;
String name;

saya mengatur objek orang seperti Person p = new Person(1,"Joe");.

1.) Saya perlu memeriksa apakah objek tersebut tidak null; Apakah ungkapan berikut benar;

if (person == null){
}

Or


if(person.equals(null))

2.) Saya perlu tahu apakah ID tersebut mengandung Int.

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

Tapi, java tidak mengizinkannya. Bagaimana saya bisa melakukan pemeriksaan ini?

sharon Hwk
sumber
10
Tidak hanya Jawa. Tipe primitif tidak boleh null dimanapun.
Rohit Jain
2
ya, nilai defaultnya intadalah 0?
sharon Hwk
1
@rachman Ya, ini 0. Jadi, Anda dapat melakukan pemeriksaan dengan 0menggunakan. Jika Anda ingin melakukan pemeriksaan null. Gunakan Integer wrapper untuk itu.
Rohit Jain
3
Tidak selalu merupakan ide yang baik untuk menggunakan int untuk mewakili kode identifikasi karena Anda tidak menggunakannya sebagai bilangan sebenarnya - Anda tidak melakukan penjumlahan atau pengurangan atau operasi matematika lainnya dengannya. Pertimbangkan untuk menggunakan String sebagai gantinya.
Hovercraft Full Of Eels

Jawaban:

184

An intbukan null, mungkin 0jika tidak diinisialisasi.

Jika Anda ingin integer dapat menjadi nol, Anda perlu menggunakan Integerbukan int.

Integer id;
String name;

public Integer getId() { return id; }

Selain itu pernyataan if(person.equals(null))tersebut tidak mungkin benar, karena jika personnull, maka a NullPointerExceptionakan dilempar. Jadi ungkapan yang benar adalahif (person == null)

Alex
sumber
@sharonHwk "person == null" seharusnya menjadi opsi yang lebih baik. Jika person null, ia tidak akan memiliki metode "sama", maka "person.equals (null)" akan dilempar.
CodingFanSteve
"Sebuah int bukan null, mungkin 0 jika tidak diinisialisasi." itu tidak 100% benar, int sebagai variabel lokal tidak akan diinisialisasi.
Emerica
Tentu saja, untuk variabel lokal tidak dapat diinisialisasi, itu adalah kode yang tidak valid, Java tidak mengizinkannya, seperti yang dideklarasikan dalam spesifikasinya.
Alex
48

primitif tidak memiliki nilai nol. default untuk int adalah 0.

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

Nilai default untuk primitif di 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

Objek memiliki null sebagai nilai default.

String (atau objek apa pun) ---> null

1.) Saya perlu memeriksa apakah objek tersebut tidak null; Apakah ungkapan berikut benar;

if (person == null){
}

potongan kode di atas memeriksa apakah person adalah null. Anda perlu melakukan

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

dan

if(person.equals(null))

Kode di atas akan menampilkan NullPointerException saat person bernilai null.

PermGenError
sumber
Terima kasih, ini sangat bermanfaat.
sharon Hwk
14

Primitif inttidak boleh null. Jika Anda membutuhkan null, gunakan Integersaja.

Zutty
sumber
3

1.) Saya perlu memeriksa apakah objek tersebut tidak null; Apakah ungkapan berikut benar;

jika (person == null) {}

YA . Ini adalah cara Anda memeriksa apakah benda itu null.

2.) Saya perlu tahu apakah ID tersebut mengandung Int.

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

NO Karena iddidefinisikan sebagai primitif int, itu akan diinisialisasi dengan default 0dan tidak akan pernah null. Tidak perlu memeriksa tipe primitif, jika nihil. Mereka tidak akan pernah menjadi nol. Jika Anda mau, Anda dapat membandingkan dengan nilai default 0sebagai if(person.getId()==0){}.

Yogendra Singh
sumber
0

Anda harus mengakses atribut kelas Anda.

Untuk mengakses atributnya, Anda harus melakukan:

person.id
person.name

dimana

orang

adalah turunan dari Orang kelas Anda.

Ini dapat dilakukan jika attibutes dapat diakses, jika tidak, Anda harus menggunakan setter dan getter ...

melli-182
sumber
@RohitJain saya tidak mengatakan itu, saya mengatakan itu tidak benar untuk meminta orang == nul jika dia ingin tahu apakah idnya "null". Karena fakta bahwa id adalah int, dia tidak bisa bertanya seperti yang Anda sarankan ...
melli-182
0

Kamu bisa memakai

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

selain pendekatan biasa

person.getId() == 0
evilcoder
sumber
0

Di Java tidak ada nilai Null untuk tipe Data primitif. Jika Anda perlu mencentang Null gunakan Integer Class, bukan tipe primitif. Anda tidak perlu khawatir tentang perbedaan tipe data. Java mengonversi data tipe primitif menjadi Integer. Ketika memikirkan tentang memori, Integer membutuhkan lebih banyak memori daripada int. Namun perbedaan alokasi memori, tidak ada yang perlu diperhatikan.

Dalam hal ini Anda harus menggunakan Inter, bukan int

Coba cuplikan di bawah dan lihat contoh untuk info lebih lanjut,

Integer id;
String name;

//Refer this example
    Integer val = 0;

`

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

`

Anda juga dapat menetapkan Null seperti di bawah ini,

val = null;
Chameera W. Ashan
sumber