2015-10-14 20 views

Antwort

9

Verwenden Sie, was auch immer lesbar ist. String.valueOf(i) oder Integer.toString(i) machen Sie Ihre Absicht viel klarer als i + "".

+1

Ist 'String.valueOf' effizienter als' i + "" '? – Sayakiss

+0

@Sayakiss Es sollte keinen Leistungsunterschied geben (in irgendeinem vernünftigen Compiler). Sie sollten sich nur um die Lesbarkeit kümmern. – Eran

13

Obwohl es funktioniert, i + "" ist eine Art von hack, int in String zu konvertieren. Der Operator + in der Zeichenkette wurde nie so entworfen. Verwenden Sie immer String.valueOf()

+1

Schöne Antwort. Außerdem denke ich, String.valueOf() ist sauberer. – A1ternat1ve

+0

Wenn der '+' - Operator nicht dafür gedacht ist, auf diese Weise verwendet zu werden, könnten Sie Dinge wie 'System.out.println (" i = "+ i)' nicht tun. Das wäre wieder wie in Modula 2 programmiert. –

+0

@ ThorbjørnRavnAndersen Einverstanden, aber wieder ist es Ihnen frei, das zu tun und es funktioniert absolut. Aber ich sage nur, dass es für Sake missbraucht wird. Schlug nur eine sauberere Art und Weise :) –

3

Es ist nicht nur die Optimierung. Ich mag es nicht

"" + i 

weil es nicht ausdrückt, was ich wirklich tun möchte.

Ich möchte keine Ganzzahl an eine (leere) Zeichenfolge anhängen. Ich mag eine ganze Zahl in String konvertieren:

Integer.toString(i) 

Oder nicht meine bevorzugten, aber immer noch besser als Verkettung, erhält eine String-Darstellung eines Objekts (integer

String.valueOf(i) 

NB: Für Code, wird sehr oft genannt wird, wie in Schleifen, Optimierung sicher auch ein Punkt für nicht Verkettung verwenden.

3

Die Sache ist, dass wenn Sie ein Integer i (nicht-primitive) haben und i + "" verwenden, yo u kann mit einer Nicht-Null-Zeichenfolge von "null" Wert enden, wenn i Null ist, während String.valueOf(...) in diesem Fall NullPointerException werfen wird.

In allen anderen Fällen ist es das gleiche (auch sehr ähnlich wie für den internen Prozess, der aufgerufen wird, um das Ergebnis zurückzugeben). Angesichts dessen, was oben steht, hängt alles vom Kontext ab, für den Sie es verwenden, z. B. e.x. Wenn Sie vorhaben, die Zeichenfolge zurück in int/Integer der + Fall zu konvertieren, möglicherweise problematischer sein.

Verwandte Themen