Output del programma Java | Insieme 8

Livello di difficoltà : Intermedio
Prevedere l'output dei seguenti programmi Java.
Programma 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'  );      }   }   

Produzione: 
 

Not equal 


Spiegazione: Poiché s1 e s2 sono due oggetti diversi, i riferimenti non sono gli stessi e l'operatore == confronta il riferimento all'oggetto. Quindi stampa "Non uguale" per confrontare i caratteri effettivi nella stringa. È necessario utilizzare il metodo .equals(). 
 
Programma 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  ();         }   }   

Produzione: 
 

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


Spiegazione: L'associazione statica (o tempo di compilazione) avviene per i metodi statici. Qui p.chisonoio() chiama il metodo statico in modo che venga chiamato durante la fase di compilazione, quindi risulta in un'associazione statica e stampa il metodo nella classe Person. 
Mentre p.chisei() richiama il metodo Ragazzo class poiché per impostazione predefinita Java lo considera un metodo virtuale, ovvero l'associazione dinamica.
 
Programma 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'  );      }   }   

Produzione: 
 

First statement of try block 15 finally block Main method 


Spiegazione:  
Poiché non vi è alcuna eccezione, non viene chiamato il blocco catch ma il blocco Finalmente Il blocco viene sempre eseguito dopo un blocco try, indipendentemente dal fatto che l'eccezione venga gestita o meno.
  
Programma 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  ();      }   }   

Produzione: 
 

gfg1gfg1gfg3 


Spiegazione: Inizialmente il nuovo thread viene avviato con il nome gfg1 quindi nella classe Due il primo metodo di esecuzione esegue il thread con il nome gfg1 successivamente viene creato un nuovo thread chiamando il metodo run ma poiché un nuovo thread può essere creato chiamando solo il metodo start in modo che il thread precedente esegua l'azione e di nuovo gfg1 viene stampato. Ora viene creato un nuovo thread chiamando il metodo start in modo che un nuovo thread inizi con gfg3 nome e quindi stampe gfg3 .