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 | Lien permanent | Commentaires (0) | Tags : java1.5, reponse question piege
Questions pièges Java n°1
Ce billet et l'un des premiers d'une série issue d'un test que j'avais réalisé en 2006 après avoir lu la spécification Java 1.5
Le test comprenait 125 "questions pièges" sur le langage Java.
Je pense que la plupart de ces questions sont toujours valables en 1.6 et peut-être en 1.7
Question 1 :
Dans le programme suivant, y a-t-il des lignes qui provoquent des erreurs de compilation ? Lesquelles :
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;
}
}
17:52 | Lien permanent | Commentaires (0) | Tags : java1.5, question piège
01/01/2000
Illustrations d'une note future
17:12 | Lien permanent | Commentaires (0)