28/05/2010
Questions pièges Java n°3
Question 3 :
Qu'affiche le programme suivant :
class AClass {
private static void egale(Integer i1,Integer i2){
if (i1 == i2)
System.out.println(i1 + " == " + i2);
}
public static void main(String[] args) {
egale(4,4);
egale(200,200);
}
}
18:58 | Lien permanent | Commentaires (0) | Tags : java1.5, question piège
Questions pièges Java n°2 : réponse
Code :
public class AClass {
public static void method(byte b){}
public static void main(String[] args) {
byte b1 = 2;
byte b2 = 256;
char c = 10-20;
method(2);
method(256);
}
}
Réponse
Les lignes 5, 6, 7 et 8 sont illégales.
Explication
- la ligne 4 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.
- la ligne 5 elle est illégale, car 256 est un entier qui ne peut pas rentrer dans un byte (les bytes peuvent contenir des valeurs comprises entre -128 et 127). Nous ne sommes donc pas dans le cas particulier de la ligne 3, et le cast implicite n'est pas autorisé.
- la ligne 6 est illégale pour les mêmes raisons
- la ligne 8 est illégale pour les mêmes raisons que la ligne 4.
- la ligne 7 est illégale, car nous somme dans le cadre d'un passage de paramètre, et non pas d'une assignation, il ne s'agit donc pas du cas particulier de la ligne
3.
Point théorique associé
ici
18:50 | Lien permanent | Commentaires (0) | Tags : java1.5, reponse question piege
Questions pièges Java n°2
Question 2 :
Dans le programme suivant, quelles sont les lignes qui provoquent des erreurs de compilation :
public class AClass {
public static void method(byte b){}
public static void main(String[] args) {
byte b1 = 2;
byte b2 = 256;
char c = 10-20;
method(2);
method(256);
}
}
18:47 | Lien permanent | Commentaires (0) | Tags : java1.5, question piège