Maison > Java > javaDidacticiel > Pourquoi les programmeurs Java privilégient-ils les types primitifs malgré l'existence de classes Wrapper ?

Pourquoi les programmeurs Java privilégient-ils les types primitifs malgré l'existence de classes Wrapper ?

DDD
Libérer: 2024-11-25 13:15:12
original
490 Les gens l'ont consulté

Why Do Java Programmers Favor Primitive Types Despite the Existence of Wrapper Classes?

Pourquoi les programmeurs utilisent-ils encore des types primitifs en Java ?

Malgré l'introduction du boxing et du unboxing dans Java 5, de nombreux développeurs continuent d'utiliser les types primitifs comme int sur leurs homologues objets, tels que java.lang.Integer. Cette pratique soulève la question de savoir pourquoi cela se produit, étant donné la commodité supplémentaire offerte par les types d'objets.

Comme indiqué dans "Effective Java" de Joshua Bloch (Point 5 : "Éviter de créer des objets inutiles"), l'utilisation de primitives peut apporter des avantages significatifs en termes de performances. Dans son exemple de code, la somme des valeurs longues à l'aide d'un objet Long prend 43 secondes, tandis que l'utilisation de primitives accélère le processus à 6,8 secondes.

Un autre facteur contribuant à l'utilisation de primitives est le manque d'égalité des valeurs natives dans les types d'objets. Pour déterminer l'égalité, la méthode verbeuse equals() doit être utilisée, contrairement à l'opérateur == efficace disponible pour les primitives.

Considérez l'extrait de code suivant :

class Biziclop {

    public static void main(String[] args) {
        System.out.println(new Integer(5) == new Integer(5)); // false
        System.out.println(new Integer(500) == new Integer(500)); // false

        System.out.println(Integer.valueOf(5) == Integer.valueOf(5)); // true
        System.out.println(Integer.valueOf(500) == Integer.valueOf(500)); // false
    }
}
Copier après la connexion

La sortie révèle l'incohérence en égalité de valeur entre new Integer() et Integer.valueOf(). Alors que la spécification du langage Java (JLS) nécessite un cache d'au moins 256 poids mouches entiers ([-128 ; 127]), les implémenteurs de JVM peuvent étendre cette plage. Cela signifie que certaines valeurs peuvent être mises en cache sur certains systèmes mais pas sur d'autres, entraînant un comportement inattendu.

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!

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