Sortida del programa Java | Set 8

Nivell de dificultat : Intermedi
Prediu la sortida dels següents programes Java.
Programa 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'  );      }   }   

Sortida: 
 

Not equal 


Explicació: Com que s1 i s2 són dos objectes diferents, les referències no són les mateixes i l'operador == compara la referència de l'objecte. Així que s'imprimeix "No és igual" per comparar els caràcters reals de la cadena s'ha d'utilitzar el mètode .equals(). 
 
Programa 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  ();         }   }   

Sortida: 
 

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


Explicació: La vinculació estàtica (o temps de compilació) es produeix per als mètodes estàtics. Aquí p.whoAmI() crida al mètode estàtic, de manera que es crida durant el temps de compilació, per tant, resulta en un enllaç estàtic i imprimeix el mètode a la classe Persona. 
Mentre que p.whoAreYou() crida al mètode Nen classe ja que per defecte Java la pren com un mètode virtual, és a dir, enllaç dinàmic.
 
Programa 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'  );      }   }   

Sortida: 
 

First statement of try block 15 finally block Main method 


Explicació:  
Com que no hi ha cap excepció, el bloc catch no es diu sinó el finalment El bloc sempre s'executa després d'un bloc try tant si es gestiona l'excepció com si no.
  
Programa 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  ();      }   }   

Sortida: 
 

gfg1gfg1gfg3 


Explicació: Inicialment, el nou fil s'inicia amb el nom gfg1 després, a la classe Dos, el primer mètode d'execució executa el fil amb el nom gfg1 després es crea un fil nou trucant al mètode d'execució, però com que es pot crear un fil nou trucant només al mètode d'inici, el fil anterior faci l'acció i de nou gfg1 s'imprimeix. Ara es crea un fil nou cridant al mètode d'inici perquè comenci un fil nou gfg3 nom i, per tant, gravats gfg3 .