Por que minha matemática está errada em Java?

No código a seguir, não vejo nenhuma maneira em que T1 e T3 são diferentes. Certamente minha calculadora diz que eles não são.

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);
    }
}

Então, por que recebo a saída de:

-1702967296
86400000
2592000000

Não é apenas System.out.println neste programa de exemplo também. Quando eu tenho T1 no eclipse e mouse sobre a variável eu recebo um gloss mostrando os mesmos valores.

versão java "1.6.0_33" OSX

questionAnswers(3)

yourAnswerToTheQuestion