Java int a String - număr Întreg.toString(eu) vs new Integer(i).toString()

Uneori java puzzle-uri cu mine. Am si eu o mare cantitate de int initializare a face.

Ce's a real diferența?

  1. Întreg.toString(i)
  2. new Integer(i).toString()
Comentarii la întrebare (8)
Soluția

Întreg.toString recomandă metoda statică din clasa Integer. Ea nu are nevoie de un exemplu de "Întreg".

Dacă te sun new Integer(i) creați o instanță de tip "Întreg", care este un obiect Java care conține valoarea de int. Apoi te sun toString metoda pe el să-l întreb pentru a returna o reprezentare șir de sine.

Dacă tot ce vrei este de a imprima un int, ai'd folosi în primul rând pentru că's mai ușor, mai rapid și nu't utilizarea de memorie suplimentare (în afară de întors string).

Dacă doriți ca un obiect care reprezintă o valoare întreagă—să-l pună într-o colecție de exemplu—ai'd folosi cel de-al doilea, deoarece oferă un obiect cu drepturi depline pentru a face tot felul de lucruri pe care le pot face cu un gol int.

Comentarii (0)

new Integer(i).toString() creează mai întâi o (redundante) obiect înveliș în jurul valorii de " eu "(care în sine poate fi un obiect înveliș "Întreg").

Întreg.toString(i) este de preferat pentru că nu't crea orice obiecte inutile.

Comentarii (0)

O altă opțiune este static Șir de caractere.valueOf metoda.

String.valueOf(i)

Simte ** puțin mai bine decât Întreg.toString(i) pentru mine. Atunci când tipul de i se schimbă, de exemplu, de la int la "dublu", codul va rămâne corectă.

Comentarii (1)
  1. new Integer(i).toString();

Această declarație creează obiectul Întreg și apoi apela metode toString(i) a reveni reprezentarea Șir de Întreg's valoare.

  1. Întreg.toString(i);

L a se întoarce la obiect String care reprezintă specifice int (integer), dar aici toString(int)` este un "statice" metoda.

Rezumat este în primul caz se revine la obiecte string reprezentare, în timp ce în al doilea caz, se întoarce reprezentarea șir de număr întreg.

Comentarii (1)

De asemenea, am foarte recomandăm să utilizați

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

Simplu și eficient.

Comentarii (4)

Deși îmi place fhucho's de recomandare

String.valueOf(i)

Ironia este că această metodă, de fapt, apelurile

Integer.toString(i)

Astfel, folosesc Șir.valueOf(i)dacă vă place cum se citește și tu nu't nevoie radix, dar, de asemenea, știind că acesta este mai puțin eficientă decât Întreg.toString(i).

Comentarii (0)

În termeni de măsurare a performanței, dacă aveți în vedere timpul de performanță apoi număr Întreg.toString(i); este scump, dacă sunteți de asteptare de mai puțin de 100 de milioane de ori. Altfel, dacă este mai mult de 100 de milioane de apeluri atunci new Integer(10).toString() se va efectua mai bine.

Mai jos este codul prin u pot încerca pentru a măsura performanța,

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));
    }

În termeni de memorie,

new Integer(i).toString();

va avea mai multă memorie ca se va crea un obiect, de fiecare dată, atât de fragmentarea de memorie se va întâmpla.

Comentarii (6)

Mai bine:

Integer.valueOf(i).toString()
Comentarii (4)

Simplu mod este de doar înlănțui `"" cu întreg:

int i = 100;

String s = "" + i;

acum " s " va fi 100 ca valoare șir.

Comentarii (0)

Aici Întreg.toString apeluri metoda statică din clasa Integer. Ea nu are nevoie de obiect pentru a apela.

Dacă suni new Integer(i)vă creați mai întâi un exemplu de tip Întreg, care este un obiect Java care conține valoarea int i. Apoi te suntoString` metoda pe el să-l întreb pentru a returna o reprezentare șir de sine.

Comentarii (0)

1.Număr întreg.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
Comentarii (0)