Maison  >  Article  >  Java  >  La différence entre int et entier

La différence entre int et entier

angryTom
angryTomoriginal
2020-02-17 13:49:4131157parcourir

La différence entre int et entier

La différence entre int et Integer

1 Integer est une classe wrapper de int, et int est un type de données de base de Java <.>

2. Les variables entières doivent être instanciées avant de pouvoir être utilisées, contrairement aux variables int

3. est en fait généré en pointant vers cet objet. ; et int stocke directement les valeurs des données

4. La valeur par défaut de Integer est nulle et la valeur par défaut de int est 0

Apprentissage recommandé :

Tutoriel Java

Extension :

Comparaison entre Integer et int

Puisque la variable Integer est en fait une référence à un objet Integer, les deux sont générés via de nouvelles variables Integer qui sont toujours inégales (car new génère deux objets avec des adresses mémoire différentes).

Integer i = new Integer(100);
Integer j = new Integer(100);
System.out.print(i == j); //false

2. Lors de la comparaison de variables Integer avec des variables int, tant que les valeurs des deux variables sont égales, le résultat est vrai (car lorsque la classe d'emballage Integer est comparée aux données de base tapez int, java décompressera automatiquement is int, puis la comparaison devient en fait une comparaison de deux variables int)

Integer i = new Integer(100);
int j = 100;
System.out.print(i == j); //true

3. Lorsque la variable Integer générée par non-new est comparée à la variable générée par new Integer (), le résultat est faux. (Parce que la variable Integer générée par non-new pointe vers l'objet dans le pool de constantes Java et que la variable générée par new Integer() pointe vers l'objet nouvellement créé dans le tas, les adresses dans la mémoire des deux sont différentes)

Integer i = new Integer(100);
Integer j = 100;
System.out.print(i == j); //false

4 . Pour deux objets Integer non nouveaux, lors de la comparaison, si les valeurs des deux variables sont comprises entre -128 et 127, le résultat de la comparaison est vrai. deux variables ne sont pas dans cette plage, le résultat de la comparaison est faux

Integer i = 100;Integer j = 100;
System.out.print(i == j); //trueInteger i = 128;
Integer j = 128;
System.out.print(i == j); //false

Pour la raison de l'élément 4 :

Lorsque Java compile Integer i = 100 ;, il sera traduit en Integer i = Integer.valueOf (100);, et le type Integer dans l'API java. La définition de valueOf est la suivante :

public static Integer valueOf(int i){
    assert IntegerCache.high >= 127;
    if (i >= IntegerCache.low && i <= IntegerCache.high){
        return IntegerCache.cache[i + (-IntegerCache.low)];
    }
    return new Integer(i);
}

Java mettra en cache les nombres compris entre -128 et 127. Lorsque Integer i = 127, 127 sera mis en cache, et Integer j = 127 sera écrit la prochaine fois. Quand, il sera récupéré directement du cache, et il ne sera pas nouveau

Pour plus de

Cours d'apprentissage en programmation, vous pouvez. suivez le site PHP chinois ! 

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn