Sortie du programme Java | Ensemble 8

Niveau de difficulté : Intermédiaire
Prédisez la sortie des programmes Java suivants.
Programme 1 :
 

Java
   class   GfG   {      public     static     void     main  (  String     args  []  )      {      String     s1     =     new     String  (  'geeksforgeeks'  );      String     s2     =     new     String  (  'geeksforgeeks'  );      if     (  s1     ==     s2  )         System  .  out  .  println  (  'Equal'  );      else      System  .  out  .  println  (  'Not equal'  );      }   }   

Sortir: 
 

Not equal 


Explication: Puisque s1 et s2 sont deux objets différents, les références ne sont pas les mêmes et l'opérateur == compare la référence de l'objet. Il affiche donc « Pas égal » pour comparer les caractères réels dans la chaîne. La méthode equals() doit être utilisée. 
 
Programme 2 :  
 

Java
   class   Person      {         private     void     who  ()      {      System  .  out  .  println  (  'Inside private method Person(who)'  );      }          public     static     void     whoAmI  ()      {      System  .  out  .  println  (  'Inside static method Person(whoAmI)'  );      }          public     void     whoAreYou  ()      {      who  ();      System  .  out  .  println  (  'Inside virtual method Person(whoAreYou)'  );      }   }   class   Kid     extends     Person   {         private     void     who  ()      {      System  .  out  .  println  (  'Kid(who)'  );      }          public     static     void     whoAmI  ()      {      System  .  out  .  println  (  'Kid(whoAmI)'  );      }          public     void     whoAreYou  ()      {      who  ();      System  .  out  .  println  (  'Kid(whoAreYou)'  );      }   }   public     class   Gfg   {      public     static     void     main  (  String     args  []  )         {      Person     p     =     new     Kid  ();         p  .  whoAmI  ();         p  .  whoAreYou  ();         }   }   

Sortir: 
 

Inside static method Person(whoAmI) Kid(who) Kid(whoAreYou) 


Explication: La liaison statique (ou temps de compilation) se produit pour les méthodes statiques. Ici p.whoAmI() appelle la méthode statique afin qu'elle soit appelée pendant la compilation, ce qui entraîne une liaison statique et imprime la méthode dans la classe Person. 
Alors que p.whoAreYou() appelle la méthode dans Enfant classe puisque par défaut Java la prend comme méthode virtuelle, c'est-à-dire une liaison dynamique.
 
Programme 3 :  
 

Java
   class   GfG   {      public     static     void     main  (  String     args  []  )      {      try      {      System  .  out  .  println  (  'First statement of try block'  );      int     num  =  45  /  3  ;      System  .  out  .  println  (  num  );      }      catch  (  Exception     e  )      {      System  .  out  .  println  (  'Gfg caught Exception'  );      }      finally      {      System  .  out  .  println  (  'finally block'  );      }      System  .  out  .  println  (  'Main method'  );      }   }   

Sortir: 
 

First statement of try block 15 finally block Main method 


Explication:  
Puisqu'il n'y a pas d'exception, le bloc catch n'est pas appelé mais le enfin Le bloc est toujours exécuté après un bloc try, que l'exception soit gérée ou non.
  
Programme 4 :  
 

Java
   class   One     implements     Runnable      {      public     void     run  ()         {      System  .  out  .  print  (  Thread  .  currentThread  ().  getName  ());      }   }   class   Two     implements     Runnable      {      public     void     run  ()         {      new     One  ().  run  ();      new     Thread  (  new     One  ()  'gfg2'  ).  run  ();      new     Thread  (  new     One  ()  'gfg3'  ).  start  ();      }   }   class   Three      {      public     static     void     main     (  String  []     args  )         {      new     Thread  (  new     Two  ()  'gfg1'  ).  start  ();      }   }   

Sortir: 
 

gfg1gfg1gfg3 


Explication : Initialement, le nouveau fil de discussion est démarré avec le nom gfg1 puis dans la classe deux, la première méthode d'exécution exécute le thread portant le nom gfg1 puis après cela, un nouveau thread est créé en appelant la méthode run, mais comme un nouveau thread peut être créé en appelant uniquement la méthode start, le thread précédent effectue l'action et encore gfg1 est imprimé.Maintenant, un nouveau thread est créé en appelant la méthode start afin qu'un nouveau thread commence par gfg3 nom et donc impressions gfg3 .