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.