//date is a java.util date
//date.getTime() = 1485462073669
int days = 3600;
long time = date.getTime() + (days * 24 * 60 * 60 * 1000L);
Dies ergibt Zeit = 344094777669. Wenn ich die Variable Tage umwandeln, wird das Ergebnis anders sein.Warum wirft dieser Java-Ausdruck nicht den endgültigen Wert für den langen Typ?
date.getTime() + ((long) days * 24 * 60 * 60 * 1000L)
Diese in der Zeit führt = 4639062073669
Warum braucht sich Tage als Typ für den Ausdruck richtig zu bewerten lange geworfen werden?
http://stackoverflow.com/questions/1494862/multiplying-long-values –
Ich bin mehr neugierig, warum das passiert. Der zweite Ausdruck ist korrekt, aber ich frage mich, warum ich die Besetzung erzwingen muss. Gemäß der ersten Verknüpfung wird die gesamte Mathematik mit dem größten Datentyp durchgeführt, sollten also nicht alle Variablen zu lange geworfen werden? Zumal die letzte Nummer als Long Type definiert ist. –
Ich sehe nicht, wie dieser Code andere Ergebnisse geben kann, wenn das Datum das gleiche Objekt ist. Wenn man einen Int zu einem Long wirft, sollte sich nichts ändern. Sind Sie sicher, dass das Datum in beiden Fällen dieselbe Instanz ist? A – davidxxx