Pourquoi ne i = i + je me donne 0?

J'ai un programme simple:

public class Mathz {
    static int i = 1;
    public static void main(String[] args) {    
        while (true){
            i = i + i;
            System.out.println(i);
        }
    }
}

Quand je lance ce programme, tout ce que je vois est 0 pour i dans ma sortie. Je me serais attendu le premier tour, nous aurions i = 1 + 1, suivie par i = 2 + 2, suivie par i = 4 + 4 etc.

Est-ce dû au fait que dès que l'on essaie de re-déclarer i sur la gauche, sa valeur est remis à 0?

Si quelqu'un peut me pointer dans les détails de ce qui serait formidable.

Changer le int à long et il semble être l'impression de numéros comme prévu. Je suis surpris de voir à quelle vitesse il frappe le max valeur de 32 bits!

InformationsquelleAutor DeaIss | 2014-06-11