Bonsoir,
Non, ce n'est pas un bug d'après moi.
Le compilateur alloue lui-même la mémoire comme il le souhaite.
Quand tu fais System.out.println("toto");, une instance de String contenant la chaîne "toto" est crée, alors que tu ne le spécifies pas explicitement.
De même, quand tu fais double d = 12.03;, ce n'est pas un double qui est alloué, mais un float.
Si tu fais long l = 12;, c'est un int qui est créé. Pour indiquer au compilateur qu'on souhaite explicitement créer un long, il est nécessaire d'ajouter le "L", comme le spécifie la documentation (pour un double on utilisera "d" pour empêcher l'utilisation d'un float).
C'est un truc à savoir, mais ce n'est pas un bug. J'imagine que c'est fait de manière à optimiser un maximum l'espace alloué.
Cordialement,
rtfm and jfgi
Simple "merci" makes helping people happy :)