QCM En JAVA – Partie 1

Question 1 sur 20

De ces 3 classes quelles sont les classes qui permettent de modifier une chaîne de caractère


  1. String
  2. StringBuffer
  3. StringTokenizer
1 2

Les classes qui permettent de modifier une chaîne de caractères en Java sont :

  •  String et
  •  StringBuffer.

La classe  StringTokenizer permet de diviser une chaîne de caractères en tokens (mots) en fonction d'un délimiteur spécifié, mais elle ne permet pas de modifier une chaîne de caractères.

Question 2 sur 20

Soit le code suivant :

int tab_int[] = new int[10]; 
[...] 
for(int i=0; i< A ;i++) 
 Terminal.ecrireIntln( B ); 

Ce code affiche tous les éléments du tableau tab_int. A et B peuvent être remplacés par :


  1. A -> tab_int.size()  B -> tab_int.get(i)
  2. A -> 10 B -> i
  3. A -> tab_int.length B -> tab_int[i]
3

Les choix possibles pour remplacer A et B sont les suivants :

  1. A doit être remplacé par tab_int.length, car length est la propriété de l'objet tableau en Java qui permet de connaître sa taille (le nombre d'éléments qu'il contient). La méthode size() n'est pas une méthode de la classe Array en Java. B doit être remplacé par tab_int[i], car on souhaite afficher l'élément du tableau à l'indice i.

Donc, la réponse est :

A -> tab_int.length B -> tab_int[i]

Question 3 sur 20

Soit le code : String s = "ABCDEF"; s.setChar(3,'X'); La chaine s contient alors : "ABCXEF"


  1. OUI
  2. NON
2

La réponse est NON.

La classe String en Java est immuable, ce qui signifie qu'une fois qu'un objet String est créé, son contenu ne peut pas être modifié.

L'appel de la méthode setChar(int index, char ch) sur une instance de String générera une erreur de compilation car cette méthode n'existe pas dans la classe String.

Pour modifier une chaîne de caractères en Java, il est recommandé d'utiliser la classe StringBuilder ou StringBuffer, qui sont toutes deux mutables.

Question 4 sur 20

Soit une classe A contenant les méthodes mstat1 et m2. mstat1 est une méthode statique et m2 n'est pas une méthode statique :


  1. la méthode mstat1 peut utiliser les attributs statiques de la classe A
  2. la méthode m2 peut utiliser les attributs statiques de la classe A
  3. la méthode mstat1 peut utiliser les attributs non statiques de la classe A
1 , 2

La réponse 1 est vraie car une méthode statique peut accéder aux attributs statiques de la classe dans laquelle elle est définie.

La réponse 2 est vraie car une méthode non statique peut accéder aux attributs statiques de la classe dans laquelle elle est définie.

Question 5 sur 20

Soit la classe C1 et la classe C2 dont tous les attributs sont privés. Les deux classes C1 et C2 appartiennent au même package. Dans ce cas, les méthodes de C1 peuvent accéder directement aux attributs d'une instance de C2


  1. OUI
  2. NON
2

Les attributs privés ne sont pas accessibles directement à partir d'une autre classe, même si elle appartient au même package. Il faudrait fournir des méthodes publiques dans la classe C2 pour accéder à ses attributs.

Question 6 sur 20

Soit le code suivant :

public class Exemple { 
 public static void main(String args[]) { 
 String str = args[Integer.parseInt(args[0])]; 
 System.out.println(str); 
}}

Commande d'exécution : java Exemple 1 TOTO


  1. Ce programme ne se compile pas car il y a une erreur de syntaxe
  2. L'exécution échoue car il y a une erreur d'exécution
  3. L'exécution de ce programme affiche à l'écran la chaine de caractère : "TOTO"
3

Le programme s'exécute sans erreur et affiche la chaîne de caractère "TOTO" à l'écran.

Voici ce qui se passe :

  • Le programme prend deux arguments lors de l'exécution : "1" et "TOTO".

  • La méthode main récupère le premier argument (args[0]), le convertit en entier à l'aide de la méthode parseInt de la classe Integer, et utilise ce résultat comme indice pour récupérer le deuxième argument (args[1]).

  • La variable str est initialisée avec la valeur "TOTO", car "args[1]" est équivalent à "args[Integer.parseInt(args[0])]".

  • Enfin, la méthode println de la classe System est utilisée pour afficher la valeur de "str" à l'écran, ce qui affiche "TOTO".

Il n'y a donc ni erreur de syntaxe ni erreur d'exécution dans ce code, et le résultat de l'exécution est bien "TOTO".

Question 7 sur 20

Dans un Langage Orienté Objet, un objet est :


  1. une instance d'une classe
  2. une classe
  3. un package
1

Dans un langage orienté objet, un objet est une instance d'une classe.

Une classe est un modèle ou un plan qui décrit les caractéristiques et le comportement d'un ensemble d'objets. Lorsque vous créez un objet à partir d'une classe, vous instanciez cette classe et créez une copie de l'objet avec ses propres propriétés et méthodes.

En revanche, un package est un moyen de regrouper des classes connexes. Il peut contenir des classes, des interfaces et d'autres packages, mais ce n'est pas un objet en soi.

Question 8 sur 20

Dans un Langage Orienté Objet les attributs sont :


  1. les données du programme
  2. le code du programme
1

Dans un langage orienté objet, les attributs sont des variables qui stockent les données de l'objet, tandis que le code du programme se compose de méthodes, qui sont des blocs de code exécutables qui définissent le comportement de l'objet.

 

Question 9 sur 20

Soit le fichier suivant C:\CodeJava\exercices\fr\cnam\util\Terminal.java.

Le fichier Terminal.java contient en 1ère ligne : package fr.cnam.util; Le répertoire C:\bin est vide.

Dans C: on réalise la commande suivante : javac -d C:\bin C:\CodeJava\exercices\fr\cnam\util\Terminal.java On obtient la création du fichier suivant : C:\bin\exercices\fr\cnam\util\Terminal.class


 

  1. OUI
  2. NON
1

La réponse est OUI, le fichier "Terminal.class" sera créé dans le répertoire "C:\bin\exercices\fr\cnam\util".

Question 10 sur 20

En Java, l'exécution d'un programme, via la commande "java", exécute la méthode main. Cette méthode peut avoir la signature suivante :


  1. public void main()
  2. public static void main()
  3. public static void main(String… args)
3

La signature de la méthode main en Java est :

  public static void main(String... args)

C'est la méthode qui est exécutée par la JVM lors de l'exécution du programme Java via la commande "java". Elle doit obligatoirement être déclarée comme "public" et "static", et accepter un tableau de chaînes de caractères (String[]) en argument.

Question 11 sur 20

En Java, soit une classe A qui utilise une autre classe B. Si on compile la classe A alors la classe B est automatiquement compilée


  1. OUI
  2. NON
2

Non, ce n'est pas automatique. Si une classe A utilise une autre classe B, il faut que la classe B soit également compilée pour que la classe A puisse être compilée avec succès. Il faut donc s'assurer que toutes les classes nécessaires à la compilation d'une classe sont disponibles et correctement compilées avant de compiler cette dernière.

Question 12 sur 20

Soit la classe suivante :

public class Individu 
{ 
 private String nom; 
 private String prenom; 
 private int age; 
 public Individu(String nom, String prenom, int age) 
 { 
 this.nom=nom; this.prenom=prenom; this.age = age; 
 } 
 public Individu(String nom, String prenom) 
 { 
 this.nom=nom; this.prenom=prenom; this.age = 0; 
 } 
} 

On peut écrire les codes suivants :


  1. Individu ind = new Individu("LAFONT","Pierre",45);
  2. Individu ind = new Individu();
  3. Individu ind = new Individu("LAFONT","Pierre");
1 , 3

Individu ind = new Individu("LAFONT","Pierre",45);

Individu ind = new Individu(); (Faux, le constructeur Individu() n'existe pas dans la classe Individu) C Individu ind = new Individu("LAFONT","Pierre");

Question 13 sur 20

Soit la méthode JAVA suivante :

public static void ajouter(String s, Arraylist l){l.add(s);}

Soit le programme JAVA qui utilise cette méthode:

ArrayList liste=new ArrayList(); liste.add("ZERO"); ajouter("UN",liste); ajouter("DEUX",liste); ajouter("TROIS",liste); for(String s:liste)System.out.print(s+" ");

On obtient l'affichage suivant :


  1. ZERO UN DEUX TROIS
  2. ZERO
1

"ZERO UN DEUX TROIS", car la méthode "ajouter" est appelée plusieurs fois pour ajouter les éléments "UN", "DEUX" et "TROIS" à la liste "liste". Ensuite, la boucle for parcourt la liste et affiche chaque élément.

Question 14 sur 20

Soit le code suivant :

int[][] matrice = new int[5][5] 
matrice[0] = new int[3]; 
matrice[1] = new int[2]; 

A l'issu de cette exécution :


  1. matrice contient 25 éléments
  2. matrice contient 15 éléments
  3. matrice contient 20 éléments
3

La matrice "matrice" est initialisée avec 5 rangées et 5 colonnes, donc contient initialement 25 éléments. Cependant, les instructions "matrice[0] = new int[3]" et "matrice[1] = new int[2]" modifient la longueur des deux premières lignes de la matrice. La première ligne contiendra 3 éléments et la deuxième ligne contiendra 2 éléments, tandis que les 3 dernières lignes contiendront toujours 5 éléments chacune. Ainsi, la matrice finale contiendra 3 + 2 + 5 + 5 + 5 = 20 éléments, mais seulement 15 d'entre eux auront une valeur assignée, les autres étant des zéros par défaut.

Question 15 sur 20

Soit le code suivant :

int v=5; 
boolean premier=true; 
for(int k=2;k<v;k=k+1) 
 if (v%k == 0) premier = false; 
 else premier = true; 
if (premier) System.out.println("PREMIER"); 
else System.out.println("NON PREMIER"); 

Ce code :


  1. affiche "NON PREMIER"
  2. affiche "PREMIER"
2

Si la valeur de v est 5, la réponse sera "PREMIER" car 5 est un nombre premier et le code détectera correctement qu'il ne peut être divisé que par 1 et 5. Donc, la réponse est A, "PREMIER".

Question 16 sur 20

En JAVA, un répertoire qui contient des fichiers .java est nécessairement un package


  1. OUI
  2. NON
2

un répertoire qui contient des fichiers .java n'est pas nécessairement un package en Java. Un package est un moyen de regrouper des classes liées dans un même espace de noms et de fournir une organisation logique pour les classes. Pour qu'un répertoire soit considéré comme un package en Java, il doit contenir un fichier nommé "package-info.java" ou il doit y avoir une déclaration de package dans chacun des fichiers .java contenus dans le répertoire.

Question 17 sur 20

Le paramètre -classpath ou la variable d'environnement CLASSPATH est utilisée pour désigner une liste de plusieurs path d'accès à des répertoires. Chacun de ces répertoires contient les fichiers .class ou les packages utilisés dans la compilation ou dans l'exécution d'un programme JAVA


  1. OUI
  2. NON
1

Oui, c'est vrai. Le paramètre -classpath ou la variable d'environnement CLASSPATH est utilisé pour définir une liste de répertoires où le compilateur Java et le programme d'exécution peuvent trouver les fichiers .class ou les packages nécessaires pour la compilation ou l'exécution d'un programme Java.

Question 18 sur 20

Soit le code JAVA suivant :

public class C { 
 private int attribut; 
 public C(){attribut=10;} 
 public void setAttribut(int a){attribut=a;} 
 public int getAttribut(){return attribut;} 
 public static void main(String[] args) 
 { 
 C objet = new C(); 
 objet.setAttribut(Integer.parseInt(args[0])); 
 System.out.println(""+objet.getAttribut()); 
 } 
} 

L'exécution de ce code est : java C 100 Il affiche :


  1. 10
  2. 100
2

Lorsque vous exécutez une classe Java avec des arguments de ligne de commande, les arguments sont passés au tableau de chaînes de caractères "args" de la méthode "main". Dans ce cas, l'argument passé est "100". La méthode "main" crée un objet de la classe "C" et appelle sa méthode "setAttribut" en passant l'argument "100" qui sera affecté à l'attribut de l'objet. Enfin, la méthode "getAttribut" est appelée pour afficher la valeur de l'attribut, qui est "100".

Question 19 sur 20

Soit le code JAVA suivant :

String slue = "un::deux trois,:quatre cinq:six sept huit"; 
StringTokenizer str = new StringTokenizer(slue); 
String res=""; 
while (str.hasMoreTokens()) 
{ 
 String s = str.nextToken(); 
 res=res+s+"#"; 
} 
Terminal.ecrireString (res);

Ce code :affiche :


  1. un#deux#trois#quatre#cinq#six#sept#huit#
  2. un##deux_trois##quatre_cinq#six_sept_huit#
  3. un::deux#trois,:quatre#cinq:six#sept#huit#
3

Le code affiche un::deux#trois,:quatre#cinq:six#sept#huit#. Le code utilise la classe StringTokenizer pour découper la chaîne de caractères slue en "mots" séparés par des espaces et des caractères spéciaux tels que ::, ,, :. La variable res est utilisée pour stocker les "mots" extraits et un caractère # est ajouté à la fin de chaque mot. Enfin, la méthode Terminal.ecrireString est appelée pour afficher la chaîne de caractères résultante.

Question 20 sur 20

Soit le code JAVA suivant :

String s1="EXEMPLE"; String s2=new String(s1); 
if (s1==s2) System.out.println("Les deux chaines sont egales"); 
else System.out.println("Les deux chaines ne sont pas egales"); 

L'exécution de ce code est :


  1. Les deux chaines sont egales
  2. Les deux chaines ne sont pas egales
2

Le code affichera "Les deux chaines ne sont pas egales". Cela est dû au fait que l'opérateur "==" compare les références des objets, pas leur contenu. Bien que les deux chaînes aient le même contenu, elles ne sont pas le même objet en mémoire car une nouvelle instance de la chaîne a été créée avec l'instruction "new". Pour comparer le contenu des chaînes, il faut utiliser la méthode "equals()".

Ajouter un commentaire

Veuillez vous connecter pour ajouter un commentaire.

Pas encore de commentaires.

OUDEV.NET OUDEV.NET OUDEV.NET OUDEV.NET OUDEV.NET OUDEV.NET OUDEV.NET