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

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

爱喝马黛茶的安东尼
Libérer: 2019-12-27 11:42:58
original
2806 Les gens l'ont consulté

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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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)
Copier après la connexion

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);
}
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal