2016-04-13 11 views
-2

Ich lese C++ 101 Regeln Richtlinien und Best Practices, und unter Punkt 28, dass post increment-Operator sollte vermieden werden, wenn wir nicht den alten Wert benötigen der Variable, da dieser Operator eine Kopie davon erstellt, daher ein kleiner Leistungsverlust.Java-Postfix-Inkrement-Operator (i ++) ein neues Objekt erstellen

Ich frage mich, ob Java diese Operation auf die gleiche Weise gemacht hat, in diesem Fall Präfix-Operator sollte auch für For-Schleifen-Anweisungen bevorzugt werden (diejenigen, die möglicherweise nicht für eine for-each oder eine Lambda ForEach() -Anweisung geeignet sind)

Java-Spezifikationen sagen (§15.14.2):

der Wert des postfix Inkrementausdruck ist der Wert der variablen vor der neue Wert gespeichert wird

Gibt es zu irgendeinem Zeitpunkt während der Operation ein neues Objekt? Da wir etwas anderes als die Variable, die inkrementiert wurde, zurückgeben.

+0

Verwenden Sie den Operator für primitive Werte oder numerische Referenztypwerte? – Savior

+0

Ja, nach dem Postfixinkrement befinden sich 2 Objekte im Speicher - neuer und alter Wert. Alter Wert ist das Ergebnis eines Ausdrucks. – Ivan

+0

Im Allgemeinen sind diese Art von Mikrooptimierungsfragen in Java bedeutungslos, da in der JVM eine Laufzeitoptimierung stattfindet. – azurefrog

Antwort

0

Ja, da ist. Diese Methode könnte es erklären:

int iplusplus(int i){ //this is just an example. in real java, this would be a copy of i 
    int old = i; //this is the copy that might be unneeded 
    i = i+1;  //this is the actual increment 
    return old; 
} 

old ist der kopierte Wert. Wenn Sie nur i erhöhen möchten, ++i kürzer:

int plusplusi(int i){ 
    return i+1; 
} 

Wie bereits erwähnt, ist diese Methode nicht das gleiche, wie der Parameter wäre ich eine Kopie, und Sie würden nicht den Wert der Variablen in der anrufenden Code ändern.

Verwandte Themen