web-dev-qa-db-fra.com

Java int à String - Integer.toString (i) vs nouvel Integer (i) .toString ()

Parfois, Java m'interpelle.
J'ai une énorme quantité d'initialisations à effectuer int .

Quelle est la différence réelle ?

  1. Integer.toString(i)
  2. new Integer(i).toString()
419
marcolopes

Integer.toString appelle la méthode statique dans la classe Integer . Il n'a pas besoin d'une instance de Integer.

Si vous appelez new Integer(i) , vous créez une instance de type Integer, qui est un objet complet Java encapsulant la valeur de votre int. Ensuite, vous appelez la méthode toString pour lui demander de renvoyer une représentation sous forme de chaîne de lui-même .

Si tout ce que vous voulez, c'est imprimer un int, vous utiliseriez le premier parce qu'il est plus léger, plus rapide et n'utilise pas de mémoire supplémentaire (à l'exception de la chaîne renvoyée).

Si vous voulez un objet représentant une valeur entière - pour le placer par exemple dans une collection -, vous utiliseriez le second, car il vous donne un objet à part entière pour faire toutes sortes de choses que vous ne pouvez pas faire avec une simple int .

542
Jean

new Integer(i).toString() crée d'abord un objet wrapper (redondant) autour de i (qui peut être lui-même un objet wrapper Integer).

Integer.toString(i) est préférable car il ne crée aucun objet inutile.

96
oksayt

Une autre option est la méthode statique String.valueOf .

_String.valueOf(i)
_

Il me semble légèrement plus droit que Integer.toString(i). Lorsque le type de i change, par exemple de int à double, le code reste correct.

42
fhucho

Je recommande aussi fortement d'utiliser

int integer = 42;
String string = integer + "";

Simple et efficace.

14
Jasper Holton
  1. new Integer(i).toString();

    Cette instruction crée l'objet de l'entier, puis appelle ses méthodes toString(i) à retourne la représentation sous forme de chaîne de la valeur de l'entier.

  2. Integer.toString(i);

    Il retourne l’objet String représentant le int spécifique (entier), mais ici toString(int) est une méthode static.

Summary est dans le premier cas, il retourne la représentation sous forme de chaîne des objets, tandis que dans le second cas, il retourne la représentation sous forme de chaîne sous forme d'entier.

14
Dhiraj

Bien que j'aime la recommandation de fhucho de

String.valueOf(i)

L'ironie est que cette méthode appelle en réalité

Integer.toString(i)

Ainsi, utilisez String.valueOf(i) si vous aimez la lecture et que vous n’avez pas besoin de radix, mais sachez également qu’il est moins efficace que Integer.toString(i).

11
Nathan Waite

En termes de mesure de la performance, si vous considérez la performance en termes de temps, le message Integer.toString (i); est cher si vous appelez moins de 100 millions de fois. Sinon, s'il y a plus de 100 millions d'appels, le nouvel Integer (10) .toString () fonctionnera mieux.

Ci-dessous, le code à travers vous pouvez essayer de mesurer la performance,

public static void main(String args[]) {
            int MAX_ITERATION = 10000000;
        long starttime = System.currentTimeMillis();
        for (int i = 0; i < MAX_ITERATION; ++i) {
            String s = Integer.toString(10);
        }
        long endtime = System.currentTimeMillis();
        System.out.println("diff1: " + (endtime-starttime));

        starttime = System.currentTimeMillis();
        for (int i = 0; i < MAX_ITERATION; ++i) {
            String s1 = new Integer(10).toString();
        }
        endtime = System.currentTimeMillis();
        System.out.println("diff2: " + (endtime-starttime));
    }

En termes de mémoire, le

nouvel entier (i) .toString ();

prendra plus de mémoire car il créera l'objet à chaque fois, ainsi la fragmentation de la mémoire se produira.

4
Dhiraj

Une façon simple est de concaténer "" avec un entier:

int i = 100;

String s = "" + i;

maintenant s aura 100 comme valeur de chaîne.

2
ShivBuyya

Mieux:

Integer.valueOf(i).toString()
2
ryu

Ici, Integer.toString appelle la méthode statique de la classe Integer. Il ne nécessite pas que l'objet appelle.

Si vous appelez new Integer(i), vous créez d'abord une instance de type Integer, qui est un objet complet Java encapsulant la valeur de votre int i. Ensuite, vous appelez la méthode toString pour lui demander de renvoyer une représentation sous forme de chaîne.

1
Shailej Shimpi

1 .Integer.toString(i)

Integer i = new Integer(8);
    // returns a string representation of the specified integer with radix 8
 String retval = i.toString(516, 8);
System.out.println("Value = " + retval);

2 .new Integer(i).toString()

 int i = 506;

String str = new Integer(i).toString();
System.out.println(str + " : " + new Integer(i).toString().getClass());////506 : class Java.lang.String