Comment vérifier si un int est un null


110

J'ai un objet appelé Person.

il a plusieurs attributs en lui;

int id;
String name;

je mets un objet personne comme Person p = new Person(1,"Joe");.

1.) Je dois vérifier si l'objet n'est pas nul; L'expression suivante est-elle correcte?

if (person == null){
}

Or


if(person.equals(null))

2.) J'ai besoin de savoir si l'ID contient un Int.

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

Mais, java ne le permet pas. Comment puis-je faire cette vérification?


10
Pas seulement Java. Un type primitif ne peut être nul nulle part.
Rohit Jain

2
ouais, la valeur par défaut d'un intest 0?
sharon Hwk

1
@sharon. Oui, c'est 0. Donc, vous pouvez faire la vérification avec à la 0place. Si vous voulez faire la vérification nulle. Utilisez le wrapper Integer pour cela.
Rohit Jain

3
Ce n'est pas toujours une bonne idée d'utiliser un int pour représenter un code d'identification puisque vous ne l'utilisez pas comme un vrai nombre - vous ne faites ni addition, ni soustraction, ni autres opérations mathématiques avec. Pensez à utiliser une chaîne à la place.
Aéroglisseur plein d'anguilles

Réponses:


185

An intn'est pas nul, il peut l'être 0s'il n'est pas initialisé.

Si vous voulez qu'un entier puisse être nul, vous devez utiliser à la Integerplace de int.

Integer id;
String name;

public Integer getId() { return id; }

De plus, l'instruction if(person.equals(null))ne peut pas être vraie, car si personest nul, alors a NullPointerExceptionsera lancé. L'expression correcte est doncif (person == null)


@sharonHwk "person == null" devrait être la meilleure option. Si personne est nul, il n'aura pas de méthode "égale", alors "person.equals (null)" se lance.
CodingFanSteve

"Un int n'est pas nul, il peut être 0 s'il n'est pas initialisé." ce n'est pas correct à 100%, un int comme variable locale ne sera pas initialisé.
Emerica

Bien sûr, car la variable locale ne peut pas être non initialisée, c'est du code invalide, Java ne le permettra pas, comme déclaré dans sa spécification.
Alex

48

les primitives n'ont pas de valeur nulle. la valeur par défaut pour un int est 0.

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

Valeurs par défaut pour les primitives en 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

Les objets ont null comme valeur par défaut.

Chaîne (ou tout objet) ---> null

1.) Je dois vérifier si l'objet n'est pas nul; L'expression suivante est-elle correcte?

if (person == null){
}

le morceau de code ci-dessus vérifie si la personne est nulle. Tu as besoin de faire

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

et

if(person.equals(null))

Le code ci-dessus lèverait NullPointerException lorsque personne est null.


Merci, c'est très utile.
sharon Hwk

14

Une primitive intne peut pas être nulle. Si vous avez besoin de null, utilisez à la Integerplace.


3

1.) Je dois vérifier si l'objet n'est pas nul; L'expression suivante est-elle correcte?

if (personne == null) {}

OUI . C'est ainsi que vous vérifiez si l'objet est null.

2.) J'ai besoin de savoir si l'ID contient un Int.

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

NON Puisque idest défini comme primitif int, il sera initialisé par défaut avec 0et il ne le sera jamais null. Il n'est pas nécessaire de vérifier les types primitifs, s'ils sont nuls. Ils ne seront jamais nuls. Si vous le souhaitez, vous pouvez comparer la valeur par défaut 0sous la forme if(person.getId()==0){}.


0

Vous devez accéder à vos attributions de classe.

Pour y accéder, vous devez faire:

person.id
person.name

la personne

est une instance de votre classe Person.

Cela peut être fait si les attributs sont accessibles, sinon, vous devez utiliser des setters et des getters ...


@RohitJain je ne dis pas ça, je dis que ce n'est pas correct de demander la personne == nul s'il veut savoir si l'id est "nul". En raison du fait que id est un int, il ne peut pas demander de la manière que vous suggérez ...
melli-182

0

Vous pouvez utiliser

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

en plus de l'approche régulière

person.getId() == 0

0

En Java, il n'y a pas de valeurs Null pour les types de données primitifs. Si vous devez cocher Null, utilisez Integer Class au lieu du type primitif. Vous n'avez pas à vous soucier de la différence de type de données. Java convertit les données de type primitif int en Integer. En ce qui concerne la mémoire, Integer prend plus de mémoire que int. Mais la différence d'allocation de mémoire, rien à considérer.

Dans ce cas, vous devez utiliser Inter au lieu de int

Essayez l'extrait ci-dessous et voyez l'exemple pour plus d'informations,

Integer id;
String name;

//Refer this example
    Integer val = 0;

»

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

»

Vous pouvez également affecter Null comme ci-dessous,

val = null;
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.