Maison > Java > Javacommencer > La différence entre int et entier en Java

La différence entre int et entier en Java

王林
Libérer: 2019-11-30 17:24:42
avant
2877 Les gens l'ont consulté

La différence entre int et entier en Java

1. Types de données de base Java et leurs classes d'encapsulation

La différence entre int et entier en Java

java Les types de données incluent les types de données de base et les types de données de référence. Afin de faciliter le traitement des types de données de base en tant qu'objets, Java introduit des classes d'encapsulation correspondant aux types de données de base. Par exemple, la classe d'encapsulation int est Integer.

Partage de vidéos d'enseignement en ligne : Vidéo d'enseignement Java

2. Déballage et emballage automatiques de Java

1. . Boxing automatique

Le boxing automatique consiste en fait à convertir les types de données de base en types de données de référence (objets)

2. Déballage automatique

Déballage automatique. convertit en fait les types de données de référence en types de données de base

Le code est le suivant :

    public static void main(String[] args) {
        Integer a = 1;//这里就用到了自动装箱;等同于Integer a = new Integer(1);

        int b = a - 1;//对象不能直接进行计算,所以这里有自动拆箱的操作,将a对象转换成基本数据类型,然后-1
        System.out.println(a);
        System.out.println(b);
    }
Copier après la connexion

Résultat d'impression :

1
0
Copier après la connexion

3 La différence entre int et Interger.

De ce qui précède, nous pouvons voir la différence entre int et Interger :

int est le type de données de base et Integer est le type de données de référence

Le la valeur par défaut de int est 0 et la valeur par défaut de Integer est nulle

Le type int stocke les valeurs directement, et Integer doit instancier l'objet et pointer vers l'adresse de l'objet.

En parlant de ça, pensez-vous que c'est ça ? En fait, il y a quelques différences détaillées entre eux : comme suit

    public static void main(String[] args) {
        Integer a = new Integer(1);
        Integer b = new Integer(1);

        int c = 1;
        int d = 1;

        Integer e = 1;
        Integer f = 1;
        
        Integer g = 130;
        Integer h = 130;
        
        Integer i = new Integer(130);
        int j = 130;
    }
Copier après la connexion

1 : a == b ? Un non-sens, certainement pas égal. Les adresses des deux nouveaux objets sont différentes.

2 : c == d ? C'est également un non-sens, les valeurs des types de données de base doivent être égales.

3 : La question clé maintenant est e == f ? g == h?

La réponse est : e == f != h;

Pourquoi cela arrive-t-il ? Parce que Integer g = 130 sera compilé dans Integer.valueOf(130) lorsque ava sera compilé. Cela peut être vu en décompilant le fichier de classe. On peut conclure du code source d'Integer que la méthode Integer.valueOf() mettra en cache l'entier entre les valeurs -128~127 et n'en créera pas un nouveau, donc e==f lorsque la valeur deux est ; supérieur à 127 ou inférieur à - À 128, un nouveau sera créé, donc g != h.

La méthode valueOf de Integer est la suivante :

    public static Integer valueOf(int i) {
         //IntegerCache.low == -128  ;IntegerCache.high == 127
         //当数值大于-128小于127时,进行缓存;否则重新new一个。
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }
Copier après la connexion

4 : Est-ce que c == e, est-ce que i == j ?

Les réponses sont toutes égales. Parce que lors de la comparaison des classes encapsulées avec les types de données de base, Java les déballera automatiquement, puis comparera si les valeurs sont égales.

Résumé :

1. Ce sont toutes des classes encapsulées et sont toutes dérivées de nouvelles, elles ne sont donc certainement pas égales. Parce que les adresses mémoire des objets sont différentes.

2. Ce sont toutes des classes encapsulées, et elles ne sont pas nouvelles. Si la valeur est comprise entre -128 et 127, elle est égale, sinon elle n'est pas égale.

3. Si la classe du package et le type de base sont comparés, tant que les valeurs​​sont égales, elles sont égales, sinon elles ne sont pas égales. Parce qu'il y aura une opération de déballage automatique lors de la comparaison de la classe encapsulée avec le type de données de base.

4. Ce sont tous des types de données de base. Si les valeurs​​sont égales, sinon, elles ne sont pas égales.

Pour plus de didacticiels connexes, veuillez consulter : Démarrer avec Java

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:csdn.net
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