İnt null olup olmadığı nasıl kontrol edilir


111

Adlı bir nesnem var Person.

içinde birkaç niteliğe sahiptir;

int id;
String name;

gibi bir kişi nesnesi ayarladım Person p = new Person(1,"Joe");.

1.) Nesnenin boş olup olmadığını kontrol etmem gerekiyor; Aşağıdaki ifade doğru mu;

if (person == null){
}

Or


if(person.equals(null))

2.) Kimliğin bir Int içerip içermediğini bilmem gerekiyor.

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

Ama java buna izin vermiyor. Bu kontrolü nasıl yapabilirim?


10
Sadece Java değil. İlkel bir tür hiçbir yerde boş olamaz.
Rohit Jain

2
evet, bir varsayılan değeri intolan 0?
sharon Hwk

1
@sharon. Evet, 0'dır. Yani, kontrolü 0yerine ile yapabilirsiniz . Boş kontrol yapmak istiyorsanız. Bunun için Tamsayı sarmalayıcı kullanın.
Rohit Jain

3
Bir tanımlama kodunu temsil etmek için int kullanmak her zaman iyi bir fikir değildir çünkü onu gerçek bir sayı olarak kullanmıyorsunuz - onunla toplama, çıkarma veya başka matematik işlemleri yapmıyorsunuz. Bunun yerine bir Dize kullanmayı düşünün.
Hovercraft Full Of Eels

Yanıtlar:


186

An intnull 0değil, başlatılmamış olabilir.

Bir tamsayının null olmasını istiyorsanız, Integerbunun yerine kullanmanız gerekir int.

Integer id;
String name;

public Integer getId() { return id; }

Ayrıca ifade if(person.equals(null))doğru olamaz, çünkü personnull ise, o zaman a NullPointerExceptionatılır. Yani doğru ifadeif (person == null)


@sharonHwk "person == null" daha iyi bir seçenek olmalıdır. Kişi boş ise, "eşit" yöntemi olmayacaktır, ardından "person.equals (null)" atar.
CodingFanSteve

"Bir int null değildir, başlatılmamışsa 0 olabilir." bu% 100 doğru değil, yerel değişken olarak bir int başlatılmayacak.
Emerica

Elbette, yerel değişken başlatılamaz, kod geçersizdir, belirtiminde belirtildiği gibi Java buna izin vermez.
Alex

49

ilkellerin boş değeri yoktur. varsayılan sahip olan bir int 0'dır.

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

Java'da temel öğeler için varsayılan değerler:

Data Type   Default Value (for fields)

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

Nesnelerin varsayılan değeri olarak null değeri vardır.

Dize (veya herhangi bir nesne) ---> null

1.) Nesnenin boş olup olmadığını kontrol etmem gerekiyor; Aşağıdaki ifade doğru mu;

if (person == null){
}

yukarıdaki kod parçası, kişinin boş olup olmadığını kontrol eder. yapman lazım

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

ve

if(person.equals(null))

Yukarıdaki kod, kişi null olduğunda NullPointerException oluşturur.


Teşekkür ederim, bu çok faydalı.
sharon Hwk

14

Bir ilkel intboş olamaz. Boş değerine ihtiyacınız varsa Integerbunun yerine kullanın.


3

1.) Nesnenin boş olup olmadığını kontrol etmem gerekiyor; Aşağıdaki ifade doğru mu;

eğer (kişi == null) {}

EVET . Nesnenin olup olmadığını bu şekilde kontrol edersiniz null.

2.) Kimliğin bir Int içerip içermediğini bilmem gerekiyor.

eğer (person.getId () == null) {}

HAYIR yana idilkel olarak tanımlanır int, varsayılan ile başlatılır olacak 0ve asla null. İlkel türleri, boş iseler kontrol etmeye gerek yoktur. Asla boş olmayacaklar. Eğer isterseniz, varsayılan değer karşı karşılaştırabilirsiniz 0olarak if(person.getId()==0){}.


0

Sınıf özelliklerinize erişmeniz gerekiyor.

Özelliklere erişmek için yapmanız gerekenler:

person.id
person.name

nerede

kişi

, sınıfınızdaki Kişinin bir örneğidir.

Bu, niteliklere erişilebiliyorsa yapılabilir, yoksa ayarlayıcıları ve alıcıları kullanmalısınız ...


@RohitJain bunu söylemiyorum, eğer kimliğin "boş" olup olmadığını bilmek istiyorsa kişi == nul sormanın doğru olmadığını söylüyorum. İd bir int olduğu için sizin önerdiğiniz şekilde soramaz ...
melli-182

0

Kullanabilirsiniz

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

düzenli yaklaşıma ek olarak

person.getId() == 0

0

Java'da ilkel Veri türleri için Boş değerler yoktur. Null seçeneğini işaretlemeniz gerekiyorsa, ilkel tür yerine Tamsayı Sınıfını kullanın. Veri türü farkı konusunda endişelenmenize gerek yok. Java, ilkel türdeki verileri Tamsayıya dönüştürür. Bellek ile ilgili olduğunda Tamsayı, int'ten daha fazla bellek alır. Ancak bellek ayırma farkı, dikkate alınması gereken bir şey değil.

Bu durumda int yerine Inter kullanmanız gerekir

Snippet'i deneyin ve daha fazla bilgi için örneğe bakın,

Integer id;
String name;

//Refer this example
    Integer val = 0;

'

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

'

Ayrıca aşağıdaki gibi Null atayabilirsiniz,

val = null;
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.