28/05/2010
Questions pièges Java n°1 : réponse
Code :
public class AClass {
public static void main(String[] args) {
byte b = 2;
char c = -1;
short s = -3;
int i = c;
double d = 2.0;
float f = 2.0;
}
}
Réponse :
Les lignes 4 et 8 provoquent des erreurs de compilation.
Explication :
- la ligne 3 devrait être illégale car l'expression "2" est un entier et ne devrait pas pouvoir être assigné à un byte sans cast explicite. Cependant nous sommes dans un des seuls cas particuliers où cette règle ne s'applique pas, à savoir la conversion rétrécissante implicite.
- la ligne 4 elle est illégale, car -1 est un entier qui ne peut pas rentrer dans un char (il est négatif et les char sont non-signés). Nous ne sommes donc pas dans le cas particulier de la ligne 3, et le cast implicite n'est pas autorisé.
- la ligne 5 est légale pour les mêmes raisons que la ligne 3.
- la ligne 6 est légale : il s'agit d'un cast élargissant implicite.
- la ligne 7 est légale : il s'agit de l'assignation d'un double à une variable de type double : il n'y a pas de cast
- la ligne 8 est illégale, car l'espression "2.0" est un double et qu'elle ne peut pas être assignée à une variable de type float sans cast explicite. L'exception des lignes 3 et 5 ne s'applique qu'aux valeurs entières.
Point théorique associé :
ici
18:01 Publié dans Programmation | Lien permanent | Commentaires (0) | Tags : java1.5, reponse question piege
Les commentaires sont fermés.