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

parfois java me laisse perplexe.

J'ai une énorme quantité de int initialisation de faire.

Quelle est la réelle différence?

  1. Integer.toString(i)
  2. new Integer(i).toString()
400
demandé sur Lonely Neuron 2010-10-14 09:02:44

11 réponses

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 Java complet encapsulant la valeur de votre int. Ensuite vous appelez la méthode toString dessus pour lui demander de retourner une représentation de chaîne de elle-même .

si tout ce que vous voulez est d'imprimer un int , vous utiliserez le premier parce qu'il est plus léger, plus rapide et n'utilise pas de mémoire supplémentaire (en dehors de la chaîne retournée).

si vous voulez qu'un objet représente une valeur entière-pour le mettre dans une collection par exemple-vous utiliserez le second, car il vous donne un objet à part entière pour faire toutes sortes de choses que vous ne pouvez pas faire avec un nu int .

528
répondu Jean 2018-05-06 14:41:32

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

Integer.toString(i) est préféré parce qu'il ne crée pas d'objets inutiles.

94
répondu oksayt 2014-07-18 14:08:17

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

String.valueOf(i)

Il sent un peu plus à droite que Integer.toString(i) pour moi. Lorsque le type de i change, par exemple de int à double , le code reste correct.

38
répondu fhucho 2015-09-07 03:31:56
  1. new Integer(i).toString();

    cette instruction crée l'objet de L'entier puis appelle ses méthodes toString(i) à renvoie la représentation de chaîne de la valeur de L'entier .

  2. Integer.toString(i);

    It renvoie l'objet String représentant l'int (entier) , mais ici toString(int) est une méthode static .

Résumé est dans le premier cas, il renvoie les objets de représentation de chaîne, où, comme dans le deuxième cas, elle renvoie la chaîne de la représentation de l'entier.

14
répondu Dhiraj 2017-11-05 12:08:35

je recommande fortement l'utilisation de

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

Simple et efficace.

14
répondu Jasper Holton 2017-11-05 12:09:40

bien que j'aime la recommandation de

String.valueOf(i)

l'ironie est que cette méthode appelle réellement

Integer.toString(i)

ainsi, utilisez String.valueOf(i) si vous aimez la façon dont il lit et vous n'avez pas besoin de radix, mais aussi en sachant qu'il est moins efficace que Integer.toString(i) .

11
répondu Nathan Waite 2017-11-05 12:11:05

en termes de mesure de la performance, si vous considérez la performance temporelle, alors L'entier .toString(i); est cher si vous appelez à moins de 100 millions de fois. Sinon, s'il s'agit de plus de 100 millions d'appels, alors le nouvel entier (10).toString () sera plus performant.

ci-dessous est le code à travers u peut 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

Nouveau entier (i).toString ();

va prendre plus de mémoire car il va créer l'objet à chaque fois, donc fragmentation de la mémoire va se produire.

4
répondu Dhiraj 2010-10-14 11:16:54

mieux:

Integer.valueOf(i).toString()
2
répondu ryu 2014-08-25 11:59:12

moyen Simple est juste concaténer "" avec un entier:

int i = 100;

String s = "" + i;

maintenant s aura 100 comme valeur de chaîne.

2
répondu ShivBuyya 2018-05-06 14:38:38

ici Integer.toString appelle la méthode statique dans la classe entier. Il ne nécessite pas l'objet d'appel.

si vous appelez new Integer(i) vous créez d'abord une instance de type entier, qui est un objet Java complet encapsulant la valeur de votre int I. Ensuite, vous appelez la méthode toString pour lui demander de retourner une représentation string de lui-même.

1
répondu Shailej Shimpi 2015-08-14 11:25:48

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
0
répondu Shivanandam Sirmarigari 2016-11-20 05:15:36