Est-il préférable d'écrire
int primitive1 = 3, primitive2 = 4;
Integer a = new Integer(primitive1);
Integer b = new Integer(primitive2);
int compare = a.compareTo(b);
ou
int primitive1 = 3, primitive2 = 4;
int compare = (primitive1 > primitive2) ? 1 : 0;
if(compare == 0){
compare = (primitive1 == primitive2) ? 0 : -1;
}
Je pense que la seconde est meilleure, elle devrait être plus rapide et plus optimisée en termes de mémoire. Mais ne sont-ils pas égaux ?
13 votes
Ne jamais appeler "new Integer" mais plutôt utiliser Integer.valueOf(int) ( docs.oracle.com/javase/6/docs/api/java/lang/ ) cette méthode accède à un cache interne et évitera souvent une allocation pour les petits entiers.
2 votes
Pour info : Sur les JVM modernes (comme HotSpot), les deux programmes deviendront probablement le même code machine après optimisation. La meilleure façon d'en être sûr est (comme toujours) de comparer les deux solutions.
0 votes
@luke merci pour la remarque, c'est un super conseil !
2 votes
En complément du commentaire de @luke : new Integer() sera déprécié dans Java9. download.java.net/java/jdk9/docs/api/java/lang/
1 votes
docs.oracle.com/javase/9/docs/api/java/lang/ est un lien qui fonctionne