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 } }
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!