dlaczego moja matematyka jest błędna w Javie?

W poniższym kodzie nie widzę sposobu, w jaki T1 i T3 są różne. Z pewnością mój kalkulator mówi, że tak nie jest.

public class longTest {
    public static final long T1 = 24 * 60 * 60 * 1000 * 30;
    public static final long T2 = 24 * 60 * 60 * 1000;
    public static final long T3 = T2 * 30;

    public static void main(String[] args) {

        System.out.println(T1);
        System.out.println(T2);
        System.out.println(T3);
    }
}

Dlaczego więc otrzymuję dane wyjściowe:

-1702967296
86400000
2592000000

W tym przykładowym programie nie jest to tylko System.out.println. Kiedy mam T1 w zaćmieniu i najeżdżam myszką na zmienną, otrzymuję połysk pokazujący te same wartości.

wersja java „1.6.0_33” OSX

questionAnswers(3)

yourAnswerToTheQuestion