java

14
Auto évaluation de Java Supméca Florent COUFFIN 1/19 29 octobre 2009 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 [...] Thomas Bernhard Thomas Bernhard Thomas 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 en début de ligne le(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 ;

Upload: simo-bouna

Post on 02-Oct-2015

34 views

Category:

Documents


16 download

DESCRIPTION

java

TRANSCRIPT

  • Auto valuation de Java Supmca

    Florent COUFFIN 1/19 29 octobre 2009

    Celui qui cesse d'largir ses connaissances et de fortifier son caractre, c'est--dire de travailler sur soi afin de tirer de soi le meilleur parti possible, a cess de vivre [...] Thomas BernhardThomas BernhardThomas BernhardThomas Bernhard

    Exercices dautovaluation (Partie I) Aspects non objets : expressions, instructions, mthodes, signatures,

    Prparation des premier et second QCM Pour transformer un code lisible en code comprhensible par la machine, on utilise : Un compilateur Un excuteur Un transformateur Un traducteur Pour avoir un commentaire sur une ligne, on place en dbut de ligne le(s) caractre(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 littral 25.5F ? double float long short Un retour la ligne est un caractre. vrai faux Pour dclarer 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 spcifier la valeur d'une variable ne peur changer, on la dclare 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 ;

  • Auto valuation de Java Supmca

    Florent COUFFIN 2/19 29 octobre 2009

    Lequel n'est pas une expression ? x + 4 3 * (y - 2) + 1 % 1 (27 + 2 / 3) = 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 (diffre 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 dclar 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 caractre en type entier 97, le code ASCII de la lettre a 0, tous les caractres 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 littral 2 est considr comme un type primitif double Car l'oprateur = est galement un oprateur de conversion Car on a une conversion par affectation et le littral 2 de type primitif int est convertit en double Que vaut le rsultat de l'affectation int x = 1F / 8; ? 0.125 0

  • Auto valuation de Java Supmca

    Florent COUFFIN 3/19 29 octobre 2009

    Une erreur de compilation Une erreur d'excution Que vaut le rsultat de l'affectation float z = 3.2/2;? 1.6 1.6f Une erreur de compilation Une erreur d'excution Que va afficher le code la console ? System.out.print(5.F/0); 0 Infinity Une erreur de compilation Une erreur d'excution Que va afficher le code la console ? System.out.print(5/0); 0 Infinity Une erreur de compilation Une erreur d'excution Qu'elle est la valeur de l'expression 2 * 3 + 1 == 5 + 2 && 1 + 3 * 1 5 && y > x || x + 3 < y + 1) System.out.println ("A"); else if (x < y + 1 && x + y

  • Auto valuation de Java Supmca

    Florent COUFFIN 4/19 29 octobre 2009

    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 + 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'excution 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'excution 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'excution 2 3 2 3 4 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

  • Auto valuation de Java Supmca

    Florent COUFFIN 5/19 29 octobre 2009

    Une erreur d'excution 2 3 2 3 4 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'excution 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]; } } 4 2 2 1 4 2 2 2 4 1 2 1 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;

  • Auto valuation de Java Supmca

    Florent COUFFIN 6/19 29 octobre 2009

    } } 1 3 5 7 9 11 13 3 1 7 5 11 9 13 13 3 5 7 9 11 1 0 1 2 3 4 5 6 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 4 3 2 3 2 1 3 2 1 0

  • Auto valuation de Java Supmca

    Florent COUFFIN 7/19 29 octobre 2009

    Changer les choses de place, c'est le travail des hommes : il faut choisir de faire cela ou rien. Albert CamusAlbert CamusAlbert CamusAlbert Camus

    Exercices dautovaluation (Partie II) Aspects Objets hors hritage, constructeurs, variables statiques,

    Prparation 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(); Dclaration d'une nouvelle variable Cration d'un objet Invocation d'une mthode Opration d'affectation Quelle est la syntaxe correcte pour un appel de mthode qui renvoie un rsultat ? (On possde une variable String mystring;) int longueur = mystring.length; int longueur = mystring.length(); int longueur = mystring::length; int longueur = mystring["length"]; Que va provoquer l'excution de ce morceau de code ? int longueur = "Mercedes ML".length(); Une erreur de compilation Une erreur d'excution Une affectation de la longueur de la chane dans la variable longueur Rien du tout Comment peut-on connatre les paramtres fournir pour crer un nouvel objet ? En consultant ... Les constructeurs Les mthodes 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 dclaration est faite dans une classe Person. O cette variable ne sera-t-elle pas visible ? private int age; Dans les mthodes 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

  • Auto valuation de Java Supmca

    Florent COUFFIN 8/19 29 octobre 2009

    Que manque-t-il pour que cette dclaration de mthode 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 crer une variable locale, y placer le rsultat de a+b puis la renvoyer Il manque le modificateur private Voici un constructeur de la classe Person, y-a-t'il un quelconque problme ? 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 problme, return permet simplement de quitter la mthode 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 mthode public String toString(); Oui Non Lorsque plusieurs mthodes ont le mme nom (surcharge), comment la machine virtuelle Java sait-elle laquelle on veut invoquer ? Elle les essaie toute une une et prend la premire qui fonctionne Elle ne devine pas, il faut lui spcifier lorsqu'on compile le code On indique le numro de la mthode que l'on veut invoquer Elle se base sur les types des paramtres Lorsque des mthodes ont le mme nom que des donnes membres (champs) prfixes de get, on les appelle des Ascenseurs Altrateurs 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); } } 1 2 0 0

  • Auto valuation de Java Supmca

    Florent COUFFIN 9/19 29 octobre 2009

    Une erreur dexcution 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); } } 3 0 3 2 3 3 3 0 3 1 6 1 Une erreur dexcution 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;

  • Auto valuation de Java Supmca

    Florent COUFFIN 10/19 29 octobre 2009

    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 {

  • Auto valuation de Java Supmca

    Florent COUFFIN 11/19 29 octobre 2009

    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); } } 1 2 0 0 Une erreur dexcution 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();

  • Auto valuation de Java Supmca

    Florent COUFFIN 12/19 29 octobre 2009

    } public void print() { System.out.print(x + " " + y + " "); } } 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 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 + " "); } } 0 2 3 1 2 3 1 0 2 3 1 0 2 3 1 0 1 2 3 0 1 2 3 0 1 2 3 1 2 3 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

  • Auto valuation de Java Supmca

    Florent COUFFIN 13/19 29 octobre 2009

    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 + " "); } } 2 2 3 3 0 2 1 2 1 3 2 3 1 2 3 4 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) ;

  • Auto valuation de Java Supmca

    Florent COUFFIN 14/19 29 octobre 2009

    Longueur de la chaine null : 0 Longueur de la chaine : 0 Une erreur d'excution 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); } // Mthode 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 mthode dont la signature est donne 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);