Jak sprawdzić, czy int jest null

110

Mam obiekt o nazwie Person.

ma w sobie kilka atrybutów;

int id;
String name;

Ustawiam obiekt osoby, taki jak Person p = new Person(1,"Joe");.

1.) Muszę sprawdzić, czy obiekt nie jest pusty; Czy poniższe wyrażenie jest poprawne;

if (person == null){
}

Or


if(person.equals(null))

2.) Muszę wiedzieć, czy identyfikator zawiera Int.

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

Ale java na to nie pozwala. Jak mogę to sprawdzić?

sharon Hwk
źródło
10
Nie tylko Java. Typ pierwotny nie może być null null.
Rohit Jain
2
tak, domyślna wartość an intto 0?
sharon Hwk,
1
@sharon. Tak, jest 0. Więc możesz 0zamiast tego zrobić czek za pomocą . Jeśli chcesz sprawdzić zerową wartość. Użyj do tego opakowania typu Integer.
Rohit Jain
3
Nie zawsze jest dobrym pomysłem używanie int do reprezentowania kodu identyfikacyjnego, ponieważ nie używasz go jako prawdziwej liczby - nie dodajesz, nie odejmujesz ani nie wykonujesz innych operacji matematycznych. Zamiast tego rozważ użycie String.
Poduszkowiec pełen węgorzy

Odpowiedzi:

185

An intnie jest null, może zostać 0zainicjowany.

Jeśli chcesz, aby liczba całkowita była null, musisz użyć Integerzamiast int.

Integer id;
String name;

public Integer getId() { return id; }

Poza tym stwierdzenie if(person.equals(null))nie może być prawdziwe, ponieważ jeśli personjest null, to NullPointerExceptionzostanie wyrzucony a. Więc prawidłowe wyrażenie toif (person == null)

Alex
źródło
@sharonHwk "person == null" powinno być lepszą opcją. Jeśli osoba ma wartość null, nie będzie miała metody „równej”, a następnie rzuca się „person.equals (null)”.
CodingFanSteve
„Int nie jest null, może mieć wartość 0, jeśli nie zostanie zainicjowany”. to nie w 100% poprawne, int jako zmienna lokalna nie zostanie zainicjowana.
Emerica
Oczywiście, ponieważ zmienna lokalna nie może być niezainicjalizowana, jest to nieprawidłowy kod, Java na to nie zezwala, zgodnie z deklaracją w specyfikacji.
Alex
48

prymitywy nie mają wartości null. Domyślnie mieć dla int to 0.

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

Domyślne wartości dla prymitywów w 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

Obiekty mają wartość domyślną null.

Ciąg (lub dowolny obiekt) ---> null

1.) Muszę sprawdzić, czy obiekt nie jest pusty; Czy poniższe wyrażenie jest poprawne;

if (person == null){
}

powyższy fragment kodu sprawdza, czy osoba jest pusta. musisz zrobić

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

i

if(person.equals(null))

Powyższy kod zgłosiłby wyjątek NullPointerException, gdy osoba ma wartość null.

PermGenError
źródło
Dziękuję, jest to bardzo przydatne.
sharon Hwk,
14

Prymityw intnie może być pusty. Jeśli potrzebujesz wartości null, użyj Integerzamiast tego.

Zutty
źródło
3

1.) Muszę sprawdzić, czy obiekt nie jest pusty; Czy poniższe wyrażenie jest poprawne;

if (person == null) {}

TAK . W ten sposób sprawdzasz, czy obiekt jest null.

2.) Muszę wiedzieć, czy identyfikator zawiera Int.

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

NIE Ponieważ idjest zdefiniowany jako prymitywny int, zostanie domyślnie zainicjowany 0i nigdy nie będzie null. Nie ma potrzeby sprawdzania typów pierwotnych, jeśli są one puste. Nigdy nie będą nieważne. Jeśli chcesz, możesz porównać z wartością domyślną 0jako if(person.getId()==0){}.

Yogendra Singh
źródło
0

Musisz mieć dostęp do atrybutów swojej klasy.

Aby uzyskać dostęp do jego atrybutów, musisz:

person.id
person.name

gdzie

osoba

jest instancją Twojej klasy Person.

Można to zrobić, jeśli można uzyskać dostęp do atrybutów, jeśli nie, musisz użyć seterów i getterów ...

melli-182
źródło
@RohitJain Nie mówię tego, mówię, że nie jest poprawne pytanie o osobę == nul, jeśli chce wiedzieć, czy identyfikator ma wartość „null”. Ze względu na to, że id jest
intem
0

Możesz użyć

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

oprócz zwykłego podejścia

person.getId() == 0
evilcoder
źródło
0

W Javie nie ma wartości Null dla pierwotnych typów danych. Jeśli chcesz sprawdzić wartość Null, użyj klasy całkowitej zamiast typu pierwotnego. Nie musisz się martwić różnicą typów danych. Java konwertuje dane typu pierwotnego int na Integer. Jeśli chodzi o pamięć Integer zajmuje więcej pamięci niż int. Ale różnica w alokacji pamięci, nic do rozważenia.

W takim przypadku musisz użyć Inter zamiast int

Wypróbuj poniższy fragment i zobacz przykład, aby uzyskać więcej informacji,

Integer id;
String name;

//Refer this example
    Integer val = 0;

`

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

`

Możesz również przypisać Null, jak poniżej,

val = null;
Chameera W. Ashan
źródło