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?

sharon Hwk
la source
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)

Alex
la source
@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.

PermGenError
la source
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.

Zutty
la source
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){}.

Yogendra Singh
la source
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 ...

melli-182
la source
@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
maléfique
la source
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;
Chameera W. Ashan
la source