web-dev-qa-db-de.com

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

Manchmal verwirrt mich Java.
Ich habe eine Menge int Initialisierungen zu machen.

Was ist der echte Unterschied?

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

Integer.toString ruft die statische Methode in der Klasse Integer auf. Es wird keine Instanz von Integer benötigt.

Wenn Sie new Integer(i) aufrufen, erstellen Sie eine Instanz vom Typ Integer, die ein vollständiges Java -Objekt ist, das den Wert Ihres int einkapselt. Anschließend rufen Sie die Methode toString auf, um sie aufzufordern, eine Zeichenfolgendarstellung von selbst zurückzugeben.

Wenn Sie nur einen int drucken möchten, würden Sie den ersten verwenden, da dieser leichter und schneller ist und keinen zusätzlichen Speicher belegt (abgesehen von der zurückgegebenen Zeichenfolge).

Wenn Sie möchten, dass ein Objekt einen ganzzahligen Wert darstellt - um es beispielsweise in eine Auflistung einzufügen -, verwenden Sie den zweiten, da Sie ein vollwertiges Objekt erhalten, mit dem Sie alle möglichen Dinge ausführen können, die Sie mit einem bloßen int nicht tun können. .

542
Jean

new Integer(i).toString() erstellt zuerst ein (redundantes) Wrapper-Objekt um i (das selbst ein Wrapper-Objekt sein kann Integer).

Integer.toString(i) wird bevorzugt, da keine unnötigen Objekte erstellt werden.

96
oksayt

Eine weitere Option ist die statische String.valueOf -Methode.

_String.valueOf(i)
_

Es fühlt sich für mich etwas besser an als Integer.toString(i). Wenn sich der Typ von i ändert, z. B. von int zu double, bleibt der Code korrekt.

42
fhucho

Ich empfehle auch sehr mit

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

Einfach und effektiv.

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

    Diese Anweisung erstellt das Objekt der Ganzzahl und ruft dann die Methoden toString(i) auf, um die Zeichenfolgendarstellung des Ganzzahlwerts zurückzugeben.

  2. Integer.toString(i);

    Es gibt das String-Objekt zurück, das das bestimmte int (integer) darstellt, aber hier ist toString(int) eine static -Methode.

Zusammenfassung gibt im ersten Fall die Zeichenfolgendarstellung des Objekts zurück, während im zweiten Fall die Zeichenfolgendarstellung der Ganzzahl zurückgegeben wird.

14
Dhiraj

Obwohl ich fhuchos Empfehlung von mag

String.valueOf(i)

Die Ironie ist, dass diese Methode tatsächlich aufruft

Integer.toString(i)

Verwenden Sie also String.valueOf(i), wenn Sie das Lesen mögen und keinen Radix benötigen, aber auch wissen, dass es weniger effizient ist als Integer.toString(i).

11
Nathan Waite

Wenn Sie in Bezug auf die Leistungsmessung die Zeitleistung berücksichtigen, ist Integer.toString (i); teuer, wenn Sie weniger als 100 Millionen Anrufe tätigen. Andernfalls, wenn es mehr als 100 Millionen Aufrufe sind, ist die Funktion new Integer (10) .toString () besser.

Unten sehen Sie den Code, mit dem Sie versuchen können, die Leistung zu messen.

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

In Bezug auf das Gedächtnis, die

new Integer (i) .toString ();

nimmt mehr Speicher in Anspruch, da das Objekt jedes Mal erstellt wird, sodass eine Speicherfragmentierung auftritt.

4
Dhiraj

Ein einfacher Weg ist, "" mit einer ganzen Zahl zu verketten:

int i = 100;

String s = "" + i;

jetzt hat s100 als Zeichenfolgenwert.

2
ShivBuyya

Besser:

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

Hier ruft Integer.toString die statische Methode in der Klasse Integer auf. Es ist nicht erforderlich, dass das Objekt aufgerufen wird.

Wenn Sie new Integer(i) aufrufen, erstellen Sie zuerst eine Instanz vom Typ Integer, die ein vollständiges Java -Objekt ist, das den Wert Ihres int i einkapselt. Anschließend rufen Sie die Methode toString auf, um sie aufzufordern, eine Zeichenfolgendarstellung von sich selbst zurückzugeben.

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