Parfois, la java me laisse perplexe.
J'ai une énorme quantité d'initialisations int à faire.
Quelle est la différence réelle ?
Integer.toString(i)
nouveau Integer(i).toString()
La méthode [Integer.toString
][1] appelle la méthode statique de la classe [Integer
][2]. Elle n'a pas besoin d'une instance de Integer
.
Si vous appelez [new Integer(i)
][3], vous créez une instance du type Integer
, qui est un objet Java complet encapsulant la valeur de votre int. Ensuite, vous appelez la méthode toString
pour lui demander de renvoyer une représentation de type chaîne de caractères de soi-même.
Si tout ce que vous voulez est d'imprimer un int
, vous utiliserez la première méthode parce qu'elle est plus légère, plus rapide et n'utilise pas de mémoire supplémentaire (à part la chaîne de caractères retournée).
Si vous voulez un objet représentant une valeur entière, pour le mettre dans une collection par exemple, vous utiliserez la seconde, car elle vous donne un objet à part entière pour faire toutes sortes de choses que vous ne pouvez pas faire avec un simple int
.
[1] : http://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html#toString-- [2] : http://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html [3] : http://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html#Integer-int-
nouveau Integer(i).toString()
crée d'abord un objet wrapper (redondant) autour de i
(qui peut lui-même être un objet wrapper Integer
).
Integer.toString(i)
est préférable car il ne crée pas d'objets inutiles.
new Integer(i).toString();
Cette instruction crée l'objet Integer et appelle ensuite ses méthodes toString(i)
pour renvoyer la représentation sous forme de chaîne de la valeur de l'Integer's.
Integer.toString(i);
Il renvoie l'objet String représentant l'entier spécifique , mais ici toString(int)
est une méthode statique
.
En résumé, dans le premier cas, elle renvoie la représentation en chaîne de l'objet, alors que dans le second cas, elle renvoie la représentation en chaîne de l'entier.