Maison  >  Article  >  Java  >  Quelles sont les différences entre Java Integer et Int ?

Quelles sont les différences entre Java Integer et Int ?

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼original
2019-12-27 11:42:582763parcourir

Quelles sont les différences entre Java Integer et Int ?

Bases :

1 Int est un type de données de base de Java, et integer est un type d'int. Classe d'encapsulation.

2. Les variables entières doivent être instanciées avant de pouvoir être utilisées, mais pas les variables int.

3. Integer est en fait une référence à un objet. Lors de la création d'un objet entier, un pointeur est en fait généré pointant vers l'objet tandis que 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.

Extension :

1. Étant donné que les variables entières sont en fait des références à des objets entiers, deux variables entières passées par new ne sont jamais égales (car les nouvelles générations sont deux objets avec des valeurs différentes. adresses mémoire).

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

2. Lorsqu'une variable entière est comparée à une variable int, tant que les valeurs des deux variables sont égales, le résultat est vrai, car integer est essentiellement une classe wrapper de int When. deux nombres sont comparés, java L'entier sera automatiquement décompressé, il s'agit donc essentiellement d'une comparaison de deux variables int.

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

3. Lorsqu'une variable entière créée par new est comparée à une variable entière non créée par new, le résultat est faux. Étant donné que les variables créées sans new existent dans le pool de constantes Java et que les variables créées avec new pointent vers les objets nouvellement créés dans le tas, les adresses mémoire des deux sont différentes.

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

4. Lors de la comparaison de deux variables entières non nouvelles, si les valeurs des deux variables sont comprises entre -128 et 127, alors le résultat est vrai, sinon il est faux.

Pour cet étrange résultat, l'explication de java est la suivante :

Integer i = new Integer(100);//在编译时会变成Integer i = Integer.ValueOf(100)

Et la définition de Integer.valueOf() dans l'API java 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);
}

C'est à dire , car Java mettra en cache le nombre compris entre -128 et 127, et la prochaine fois que vous attribuerez une valeur à une variable entière, si elle est comprise entre -128 et 127 et qu'elle a été mise en cache, elle sera appelée directement depuis le cache.

Le site Web PHP chinois propose un grand nombre de tutoriels d'introduction JAVA gratuits, tout le monde est invité à apprendre !

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