Auto évaluation de Java
Supméca
Celui qui cesse d'élargir ses connaissances et de fortifier son caractère, c'est-à-dire de travailler sur soi afin de tirer de soi le meilleur parti possible, a cessé de vivre [...] Bernhard Thomas Bernhard
Exercices d’autoévaluation (Partie I) Aspects non objets : expressions, instructions, méthodes, signatures, … Préparation des premier et second QCM
Pour transformer un code lisible en code compréhensible par la machine, on utilise : Un compilateur Un exécuteur Un transformateur Un traducteur
Pour avoir un commentaire sur une ligne, on place plac e en début de ligne le(s) caractère(s) caractère(s ) : // # ' %
Lequel n'a pas sa place parmi ces choix : instanceof select for volatile
Lequel de ces identificateurs est incorrect : ToTaL nom_prenom 2emechoix valeur$
De quel type primitif est le littéral 25.5F ? double float long short
Un retour à la ligne est un caractère. vrai faux
Pour déclarer une variable de type primitif int qui a pour nom jour, il faut écrire : int jour; declare(type int) : jour; dim jour as integer; jour = new int;
Pour spécifier la valeur d'une variable ne peur changer, on la déclare comme une constante avec le mot clé : finalize const define final
Trouvez la ligne incorrecte : int somme = 15; int somme=15; i nt somme = 1 5 ;
Florent COUFFIN
1/19
29 octobre 2009
Auto évaluation de Java
Supméca
Lequel n'est pas une expression ? x+4 3 * (y - 2) + 1 % 1 (27 + 2 / 3) <= 3 - 1 (2 == x - 7 * 3) + 1
Quelle est la valeur de l'expression x = 3 * a / 2.0F si l'on suppose que a est une variable de type int qui vaut 7, que x est une variable de type float et que la valeur de x avant affectation est 12 ? 12.0 10.5 Ce n'est pas une expression 10.0
Quel est le résultat de l'expression 39 % 7 ? 4 5 5.6 6
Quelle est la valeur de l'expression 5 * 3 >= 3 + 5 * 2 ? false true
Quelle est la valeur de l'expression 17 >= 8 * 2 && ! (17 / 2 >= 8) ? true false
Quelle est la valeur de l'expression boolean a = (boolean) 1 true false erreur de compilation
Que va afficher à la console le programme ci-dessus (diffère du C) ? public static void main(String[] args) { int x = 0; x = x+++2; System.out.println (x); }
0 1 2 3
Supposons qu'on aie déclaré char c = 'a';, que vaudra l'expression (int) c ? On ne peut pas le faire, c'est une narrowing conversion ! On ne peut pas convertir un type caractère en type entier 97, le code ASCII de la lettre a 0, tous les caractères convertit en char valent 0
Pourquoi est-il équivalent d'écrire double x = 2; et double x = 2D; ? Ce n'est pas du tout équivalent !!! Car le littéral 2 est considéré comme un type primitif double Car l'opérateur = est également un opérateur de conversion Car on a une conversion par affectation et le littéral 2 de type primitif int est convertit en double
Que vaut le résultat de l'affectation int x = 1F / 8; ? 0.125 0 Florent COUFFIN
2/19
29 octobre 2009
Auto évaluation de Java
Supméca
Une erreur de compilation Une erreur d'exécution
Que vaut le résultat de l'affectation float z = 3.2/2;? 1.6 1.6f Une erreur de compilation Une erreur d'exécution
Que va afficher le code à la console ? System.out.print(5.F/0); 0 Infinity Une erreur de compilation Une erreur d'exécution
Que va afficher le code à la console ? System.out.print(5/0); 0 Infinity Une erreur de compilation Une erreur d'exécution
Qu'elle est la valeur de l'expression 2 * 3 + 1 == 5 + 2 && 1 + 3 * 1 <= 8 / 2 ? true false
Lequel n'a pas sa place dans cette liste if do switch ?:
Toute instruction if peut s'écrire comme une instruction switch équivalente : vrai faux
Que va afficher le code à la console ? int x = 5; double y = 3.5; if (x > 5 && y > x || x System.out.println else if (x < y + 1 && x System.out.println else System.out.println
+ 3 < y + 1) ("A"); + y <= 12) ("B"); ("C");
A B C Rien du tout, le code ne compile pas !
Que va afficher le code à la console ? int x = 7; switch (x) { case 6: case 7: case 8: System.out.println ("A"); case 9:
Florent COUFFIN
3/19
29 octobre 2009
Auto évaluation de Java
Supméca
case 10: System.out.println ("B"); break; default: System.out.println ("C"); }
A B C Autre chose Rien du tout, le code ne compile pas !
Laquelle de ces propositions est équivalente au code donné sachant que les variables x et y sont de type int ? int z; if (x > 5 && x < y) z = 3; else z = 45;
int z = x > 5 && x < y ? 45 : 3; int z = 6 <= x && y >= x + 1 ? 3 : 45; int z = ! x > 5 && ! x < y ? 45 : 3; int z = x + 1 >= 6 && x < y ? 3 : 45;
Que va produire le code ci-dessous ? for ( ; ; ){} Une erreur de compilation Une erreur d'exécution Une boucle infinie Rien du tout, c'est comme-ci on n'avait rien mis
Dans laquelle de ces instructions serait-il étrange de voir une instruction break ? do for switch if-else
Que va afficher le code à la console ? int []t ; t[0]=1; System.out.println(t[0]);
Une erreur de compilation Une erreur d'exécution 0 1
Que va afficher le code à la console ? int []t = {2,3,4} ; for(int i =0; i < t.length -1; i++) System.out.println(t[i]);
Une erreur de compilation Une erreur d'exécution 23 234
Que va afficher le code à la console ? int []t = {2,3,4} ; for(int i =0; i < 4; i++) System.out.println(t[i]);
Une erreur de compilation Florent COUFFIN
4/19
29 octobre 2009
Auto évaluation de Java
Supméca
Une erreur d'exécution 23 234
Que va afficher le code à la console ? int []t = {2,3,4} ; t = new int[5]; System.out.println(t[0]);
Une erreur de compilation Une erreur d'exécution 0 2
Que va afficher le code à la console ? int [][]t ; t = new int[2][]; t[0] = new int[3]; t[1] = new int [] {3,4,5,6}; System.out.println(t.length + t[0].length + t[1].length);
Une erreur de compilation 0 9 6
Que va afficher le code à la console ? public class C1 { static public void main(String[] ts){ int []t = {1,2}; int b =1, c; c = fonction(b,t); System.out.println(c + " " +t[0] + " " +t[1] + " " + b); } static int fonction(int a, int []tb){ tb[0]++; a++; tb[1] = a; return tb[0] + tb[1]; } }
4221 4222 4121 Une erreur de compilation
Que va afficher le code à la console ? public class C1 { static public void main(String[] ts){ int []t = {1,3,5,7,9,11, 13}; fonction(0,t); for(int i = 0; i < t.length; i++) System.out.print(t[i] + " "); } static void fonction(int a ,int []tb){ if(a < tb.length - 1) { int b = tb[a]; tb[a] = tb[a+1]; tb[a+1] = b; fonction(a + 2 ,tb); } else return;
Florent COUFFIN
5/19
29 octobre 2009
Auto évaluation de Java
Supméca
} }
1 3 5 7 9 11 13 3 1 7 5 11 9 13 13 3 5 7 9 11 1 0123456
Que va afficher le code à la console ? public class Test { static public void main(String [] args) { fonc(3); } public static void fonc(int n) { if (n > 0) { System.out.print(n -- + " "); fonc(n); } } } Rien Une boucle infinie 432 321 3210
Florent COUFFIN
6/19
29 octobre 2009
Auto évaluation de Java
Supméca
Changer les choses de place, c'est le travail des hommes : il faut choisir de faire cela ou rien. Albert Camus Camus
Exercices d’autoévaluation (Partie II) Aspects Objets hors héritage, constructeurs, variables statiques, … Préparation des premier et second QCM Lequel n'a pas sa place dans cette liste 9 "cool" 'c' 18L
Que ne fait pas cette instruction Java ? Date today = new Date();
Déclaration d'une nouvelle variable Création d'un objet Invocation d'une méthode Opération d'affectation
Quelle est la syntaxe correcte pour un appel de méthode qui renvoie un résultat ? (On possède une variable String mystring;) int longueur = mystring.length; int longueur = mystring.length(); int longueur = mystring::length; int longueur = mystring["length"];
Que va provoquer l'exécution de ce morceau de code ? int longueur = "Mercedes ML".length();
Une erreur de compilation Une erreur d'exécution Une affectation de la longueur de la chaîne dans la variable longueur Rien du tout
Comment peut-on connaître les paramètres à fournir pour créer un nouvel objet ? En consultant ... Les constructeurs Les méthodes Les packages Les librairies
Que va afficher cette instruction à la console ? System.out.println (4 + 5 + " enfants");
45 enfants 9 enfants 0 0 enfants
Qu'est-ce-qu'une classe par rapport à un objet Un objet est une instance d'une classe Une classe est une instance d'un objet Il n'y a aucun lien entre classe et objet
Cette déclaration est faite dans une classe Person. Où cette variable ne sera-t-elle pas visible ? private int age;
Dans les méthodes de la classe Person Dans le corps de la classe Person Dans le code qui utilise un objet de la classe Person Nulle part, elle sera visible partout Florent COUFFIN
7/19
29 octobre 2009
Auto évaluation de Java
Supméca
Que manque-t-il pour que cette déclaration de méthode compile ? public somme (int a, int b) { return a + b; }
Rien du tout, c'est correct Il manque le type de retour On ne peut pas renvoyer directement a+b, il faut créer une variable locale, y placer le résultat de a+b puis la renvoyer Il manque le modificateur private
Voici un constructeur de la classe Person, y-a-t'il un quelconque problème ? public Person (String n) { name = n; return; }
On ne peut pas utiliser return dans un constructeur puisqu'il ne doit rien renvoyer Un constructeur doit renvoyer une instance, il faut donc mettre return new Person (n); Aucun problème, return permet simplement de quitter la méthode Il faut explicitement mettre void si l'on veut pouvoir faire return
Peut-on toujours afficher un objet à la console en utilisant System.out sans devoir ajouter une méthode public String toString(); Oui Non
Lorsque plusieurs méthodes ont le même nom (surcharge), comment la machine virtuelle Java sait-elle laquelle on veut invoquer ? Elle les essaie toute une à une et prend la première qui fonctionne Elle ne devine pas, il faut lui spécifier lorsqu'on compile le code On indique le numéro de la méthode que l'on veut invoquer Elle se base sur les types des paramètres
Lorsque des méthodes ont le même nom que des données membres (champs) préfixées de get, on les appelle des Ascenseurs Altérateurs Accesseurs Animateurs
Que va afficher le code à la console ? public class Test { static public void main(String [] args) { Test m = new Test(1,2); m.print(); } private int x, y; public Test(int x, int y) { x=x; y=y; } public void print() { System.out.println(x + " " + y); } }
12 00 Florent COUFFIN
8/19
29 octobre 2009
Auto évaluation de Java
Supméca
Une erreur d’exécution Une erreur de compilation
Que va afficher le code à la console ? public class Test { private static int cpt; private int x = 1; static public void main(String [] args) { Test t1 = new Test(); Test t2 = new Test(5); } public Test() { this(2); cpt ++; System.out.print(" " + x + " " + cpt); } public Test(int nx) { x = nx + 1; System.out.print(" " + x + " " + cpt); } }
303233 303161 Une erreur d’exécution Une erreur de compilation
Que va afficher le code à la console ? public class Test { static public void main(String [] args) { Test m = new Test(); } private static int N = 2; private int x = 1, y = x + N; public Test() { System.out.println("" + x + y + N); } } 000 132 112 123
Que va afficher le code à la console ? public class Test { static public void main(String [] args) { Maclass m1 = new Maclass(3,4); Maclass m2 = new Maclass(5,6); m1.test(m2, m2); m1.print(); m2.print(); } } class Maclass { private int x = 1, y = 2; public Maclass(int a, int b) { x = a;
Florent COUFFIN
9/19
29 octobre 2009
Auto évaluation de Java
Supméca
y = b; } public void print(){ System.out.println("" + x + y ); } public static void test(Maclass c1, Maclass c2){ Maclass t = c1; c1 = c2; c2 = t; } } 0000 5634 3456 3434
Que va afficher le code à la console ? public class Test { static public void main(String [] args) { Maclass m = new Maclass(); } } class Maclass { private static int N = 2; private int x = 1, y = x + N; public Maclass() { System.out.println("" + x + y + N); } } 000 132 143 112
Que va afficher le code à la console ? public class Test { static public void main(String [] args) { Maclass m = new Maclass(); } } class Maclass { private static int N = 2; private int x = 1, y = x + N; public Maclass() { System.out.println("" + x + y + N); } } 000 132 143 112
Que va afficher le code à la console ? public class Test { static public void main(String [] args) { Maclass m = new Maclass(); } } class Maclass {
Florent COUFFIN
10/19
29 octobre 2009
Auto évaluation de Java
Supméca
private int x = 1, y = 2; public Maclass() { } public Maclass(int a, int b) { x = a; y = b; System.out.println("" + x + y ); } } Rien 00 12 21
Que va afficher le code à la console ? public class C1 { static public void main(String[] ts){ MaClass m = new MaClass(); m.print(); } } class MaClass { private int x, y; public MaClass(int nx, int ny) { x = 1; y = 2; } public void print() { System.out.println(x + " " + y); } }
12 00 Une erreur d’exécution Une erreur de compilation
Que va afficher le code à la console ? public class C1 { static public void main(String[] ts){ MaClass m = new MaClass(); m.print(); } } class MaClass { private int x, y; public MaClass(int nx, int ny) { x=nx; y=ny; print(); } public MaClass() { this(1); print(); } public MaClass(int nx) { this(nx, nx); print();
Florent COUFFIN
11/19
29 octobre 2009
Auto évaluation de Java
Supméca
} public void print() { System.out.print(x + " " + y + " "); } }
1111 111111 11111111 Une erreur de compilation
Que va afficher le code à la console ? public class C1 { static public void main(String[] ts){ MaClass m1 = new MaClass(); MaClass m2 = new MaClass(); } } class MaClass { private int x, y; static { System.out.print(0 + " "); } { System.out.print(1 + " "); } public MaClass(int nx, int ny) { x=nx; y=ny; System.out.print(2 + " "); } public MaClass() { this(0,0); System.out.print(3 + " "); } }
0231231 02310231 01230123 0123123 public class Test { static public void main(String [] args) { Maclass m = new Maclass(); } }
Que va afficher le code à la console ? class Maclass { private int x = 1, y = 2; static int c; public Maclass() { this(c,c); } public Maclass(int a, int b) { x = a; y = b; System.out.println("" + x + y ); } } Rien 00
Florent COUFFIN
12/19
29 octobre 2009
Auto évaluation de Java
Supméca
12 21
Que va afficher le code à la console ? public class C1 { static public void main(String[] ts){ MaClass m1 = new MaClass(); MaClass m2 = new MaClass(); m1.print(); m2.print(); } } class MaClass { private static int cp ; private int n; static { cp = 1; } public MaClass() { n = cp++; } public void print() { System.out.print(n + " " + cp + " "); } }
2233 0212 1323 1234
Que va afficher le code à la console ? public class C1 { static public void main(String[] ts){ MaClass [] m1 = new MaClass[10]; MaClass.print(); } } class MaClass { private static int cp ; private int n; static { cp = 1; } public MaClass() { n = cp++; } public static void print() { System.out.print(cp + " "); } }
0 10 1 Une erreur de compilation
Que va afficher à la console le code suivant ? String name; int longueur = name.length(); System.out.println ("Longueur de la chaine " + name + " : " + longueur) ;
Florent COUFFIN
13/19
29 octobre 2009
Auto évaluation de Java
Supméca
Longueur de la chaine null : 0 Longueur de la chaine : 0 Une erreur d'exécution Une erreur de compilation
Que va afficher à la console le programme suivant ? // La classe Nombre public class Nombre { private int valeur; public Nombre(int valeur) { this.valeur = valeur; } public void change(int nouvellevaleur) { valeur = nouvellevaleur; } public String toString() { return String.valueOf(valeur); } // Méthode main public static void main (String[] args) { Nombre n1, n2; n1 = new Nombre(8); n2 = n1; n1.change(9); System.out.println (n2); } }
1 Une erreur de compilation 8 9
Que va afficher à la console le programme suivant ? Integer nb1 = new Integer(4); Integer nb2 = new Integer(4); System.out.println(nb1 == nb2);
true false 4 1
La méthode dont la signature est donnée ci-dessous se trouve dans la classe Math, comment faire pour calculer le sinus de 1 radian ? public static double sin (double angle);
Math m = new Math(); m.sin (1); new Math().sin (1); Math.sin (1); Math.static.sin (1);
Florent COUFFIN
14/19
29 octobre 2009