for-Schleife beendet vorzeitig beim Vergleich mit Integer.MAX_VALUE und Verwendung von System.out.println

8

Wenn ich diese Klasse starte, scheint die for-Schleife früh zu enden

%Vor%

Ausgabe ist:

%Vor%

Warum endet es dort? Interessanterweise würde, wenn ich System.out.println(i) in der for-Schleife lösche, die Ausgabe End:-2147483647 sein. Offensichtlich hat der Wert in i wrapped round .

Die von mir verwendete Java-Version ist

%Vor%     
Ben 09.10.2012, 05:19
quelle

2 Antworten

15

Es ist ein bekannter Bug in Java 6. Der JIT optimiert die Schleife falsch. Ich glaube, dass neuere Versionen von Java diesen Fehler nicht haben.

Ссылка

Java 6 Update 16 ist etwas über zwei Jahre alt. Ich schlage vor, Sie aktualisieren auf die neueste Version Java 6 Update 25, wenn Sie nicht auf Java 7 aktualisieren können.

BTW Java 6 wird Ende des kostenlosen Support in ein paar Monaten (Dez 2012)

sein     
Peter Lawrey 09.10.2012, 05:29
quelle
1

Sie können den JVM-Fehler umgehen, indem Sie Integer.MAX_VALUE-1 verwenden.

    
user2411179 23.10.2013 18:50
quelle

Tags und Links