5 Stimmen

Integer.valueOf() besser als new Integer()

Mögliche Duplikate:
Neuer Integer vs valueOf

Ich habe an einigen Stellen gelesen, dass Integer.valueOf besser ist als new Integer(), da es dem Compiler ermöglicht, Werte zu zwischenspeichern. Wann sollte ich also new Integer() verwenden und nicht Integer.valueOf()? Gibt es einen Grund/ein Szenario, in dem ich Integer.valueOf() nicht verwenden sollte?

Danke

5voto

bmargulies Punkte 94152

Sie verwenden new, wenn Sie eine eindeutige Objektidentität benötigen. Sie verwenden valueOf, wenn nicht.

Wenn Sie valueOf mehrmals für denselben Wert aufrufen, kann Ihnen der JVM möglicherweise tatsächlich in einigen Fällen immer wieder dasselbe Objekt geben. Wenn Sie new verwenden, wird dies nicht der Fall sein. Wenn Sie also mehrere verschiedene 2-Objekte benötigen (z. B. um wait aus unterschiedlichen Gründen aufzurufen), verwenden Sie new.

Wenn Sie dagegen nur deshalb Integer anstelle von int verwenden, um die Möglichkeit von null zu haben oder in einer Sammlung zu speichern, verwenden Sie valueOf.

5voto

Mathias Schwarz Punkte 6931

Nein, es gibt kein Szenario, in dem new Integer() verwendet werden sollte. Wenn Sie Ganzzahlen nach ihrer Wrapper-Objektidentität unterscheiden, machen Sie wahrscheinlich etwas Unvernünftiges.

1voto

Sean Patrick Floyd Punkte 283617

Der einzige Grund, den ich mir vorstellen kann, ist ein Szenario, in dem Sie zwei verschiedene, aber gleiche Integer-Objekte benötigen.

System.out.println(new Integer(1)==new Integer(1)); // false
System.out.println(Integer.valueOf(1)==Integer.valueOf(1)); // true

0voto

sudocode Punkte 15987

Ein gültiger Grund, Integer.valueOf(int) nicht zu verwenden, könnte sein, wenn Ihr Projekt darauf beschränkt ist, JDK-Versionen vor 1.5 zu verwenden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X