logo

Sortie du programme Java | Ensemble 7

Niveau de difficulté : Intermédiaire Prédire la sortie des programmes Java suivants. Programme 1 : Java
public class Calculator {  int num = 100;  public void calc(int num) { this.num = num * 10; }  public void printNum() { System.out.println(num); }  public static void main(String[] args)  {  Calculator obj = new Calculator();  obj.calc(2);  obj.printNum();  } } 
Possibilités : A) 20 B) 100 C) 1000 D) 2 Réponse : A) 20 Explication : Ici, le nom de la variable d'instance de classe (num) est le même que calc() nom de la variable locale de la méthode (num). Donc, pour référencer la variable d'instance de classe à partir de calc() méthode ce le mot-clé est utilisé. Donc dans la déclaration this.num = num * 10 dans un représente la variable locale de la méthode dont la valeur est 2 et ce.num représente une variable d'instance de classe dont la valeur initiale est 100. Maintenant dans printNum() méthode car elle n'a pas de variable locale dont le nom est le même que la variable d'instance de classe afin que nous puissions l'utiliser directement dans un pour référencer une variable d'instance bien que ce.num peut être utilisé.   Programme 2 : Java
public class MyStuff {  String name;  MyStuff(String n) { name = n; }  public static void main(String[] args)  {  MyStuff m1 = new MyStuff('guitar');  MyStuff m2 = new MyStuff('tv');  System.out.println(m2.equals(m1));  }  @Override  public boolean equals(Object obj)  {  MyStuff m = (MyStuff) obj;  if (m.name != null) { return true; }  return false;  } } 
Possibilités : A) La sortie est vraie et MyStuff remplit le contrat Object.equals(). B) La sortie est fausse et MyStuff remplit le contrat Object.equals(). C) La sortie est vraie et MyStuff ne remplit PAS le contrat Object.equals(). D) La sortie est fausse et MyStuff ne remplit PAS le contrat Object.equals(). Répondre : C) La sortie est vraie et MyStuff ne remplit PAS le contrat Object.equals(). Explication : Comme est égal (objet obj) La méthode de la classe Object compare deux objets sur la base d’une relation d’équivalence. Mais ici, nous confirmons simplement que l'objet est nul ou non. Il ne remplit donc pas Objet.equals() contracter. Comme m1 n'est pas nul, vrai sera imprimé.   Programme 3 : Java
class Alpha {  public String type = 'a ';  public Alpha() { System.out.print('alpha '); } } public class Beta extends Alpha {  public Beta() { System.out.print('beta '); }  void go()  {  type = 'b ';  System.out.print(this.type + super.type);  }  public static void main(String[] args)  {  new Beta().go();  } } 
Possibilités : A) alpha bêta b b B) alpha bêta a b C) bêta alpha b b D) bêta alpha a b Répondre : A) alpha bêta b b Explication : La déclaration nouvelle bêta().go() s'exécute en deux phases. En première phase Bêta Le constructeur de classe est appelé. Aucun membre d'instance n'est présent dans Bêta classe. Alors maintenant Bêta le constructeur de classe est exécuté. Comme Bêta la classe s'étend Alpha cours donc l'appel est dirigé vers Alpha le constructeur de classe comme première instruction par défaut (mis par le compilateur) est super() dans le Bêta constructeur de classe. Maintenant, en tant que variable d'instance ( taper ) est présent dans Alpha classe donc il aura de la mémoire et maintenant Alpha Bêta Instruction suivante du constructeur de classe. Donc alphabêta est imprimé. En deuxième phase aller() La méthode est appelée sur cet objet. Comme il n'y a qu'une seule variable ( taper ) dans l'objet dont la valeur est un . Il sera donc modifié en b et imprimé deux fois. Le super mot-clé ici, ça ne sert à rien.   Programme 4 : Java
public class Test {  public static void main(String[] args)  {  StringBuilder s1 = new StringBuilder('Java');  String s2 = 'Love';  s1.append(s2);  s1.substring(4);  int foundAt = s1.indexOf(s2);  System.out.println(foundAt);  } } 
Possibilités : A) -1 B) 3 C) 4 D) UNE StringIndexOutOfBoundsException est lancé au moment de l'exécution. Répondre : C)4 Explication : ajouter (chaîne de caractères) méthodeconcatène la str à s1 . Le sous-chaîne (index int) La méthode renvoie la chaîne de l’index donné jusqu’à la fin. Mais comme il n'y a aucune variable String pour stocker la chaîne renvoyée, elle sera détruite.Maintenant indexDe(Chaîne s2) La méthode renvoie l'index de la première occurrence de s2 . Donc 4 est imprimé comme s1='JavaLove'.   Programme 5 : Java
class Writer {  public static void write()  {  System.out.println('Writing...');  } } class Author extends Writer {  public static void write()  {  System.out.println('Writing book');  } } public class Programmer extends Author {  public static void write()  {  System.out.println('Writing code');  }  public static void main(String[] args)  {  Author a = new Programmer();  a.write();  } } 
Possibilités : A) Écriture... B) Écriture d'un livre C) Écriture de code D) Échec de la compilation Répondre : B) Cahier d'écriture Explication : Étant donné que les méthodes statiques ne peuvent pas être remplacées, l’objet de classe créé n’a pas d’importance. Comme un est un Auteur type référencé donc toujours Auteur La méthode de classe est appelée. Si on supprime écrire() méthode de Auteur classe alors Écrivain la méthode de classe est appelée comme Auteur la classe s'étend Écrivain classe.