Ausgabe des Java-Programms | Satz 8

Schwierigkeitsgrad : Dazwischenliegend
Sagen Sie die Ausgabe der folgenden Java-Programme voraus.
Programm 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'  );      }   }   

Ausgabe: 
 

Not equal 


Erläuterung: Da es sich bei s1 und s2 um zwei unterschiedliche Objekte handelt, sind die Referenzen nicht identisch und der Operator == vergleicht die Objektreferenz. Daher wird „Ungleich“ ausgegeben, um die tatsächlichen Zeichen in der Zeichenfolge zu vergleichen. Es muss die Methode „equals()“ verwendet werden. 
 
Programm 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  ();         }   }   

Ausgabe: 
 

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


Erläuterung: Statische Bindung (oder Kompilierungszeit) erfolgt für statische Methoden. Hier p.whoAmI() Ruft die statische Methode auf, sodass sie während der Kompilierungszeit aufgerufen wird, was zu einer statischen Bindung führt und die Methode in der Person-Klasse ausgibt. 
Wohingegen p.whoAreYou() ruft die Methode auf Kind Klasse, da Java sie standardmäßig als virtuelle Methode verwendet, d. h. als dynamische Bindung.
 
Programm 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'  );      }   }   

Ausgabe: 
 

First statement of try block 15 finally block Main method 


Erläuterung:  
Da es keine Ausnahme gibt, wird der Catch-Block nicht aufgerufen, sondern der Endlich Der Block wird immer nach einem Try-Block ausgeführt, unabhängig davon, ob die Ausnahme behandelt wird oder nicht.
  
Programm 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  ();      }   }   

Ausgabe: 
 

gfg1gfg1gfg3 


Erläuterung : Zunächst wird ein neuer Thread mit dem Namen gestartet gfg1 Dann führt in der zweiten Klasse die erste Ausführungsmethode den Thread mit dem Namen aus gfg1 Danach wird ein neuer Thread mit der Methode „run“ erstellt. Da ein neuer Thread jedoch nur durch den Aufruf der Methode „start“ erstellt werden kann, führt der vorherige Thread die Aktion erneut aus gfg1 wird gedruckt. Nun wird durch Aufrufen der Startmethode ein neuer Thread erstellt, sodass ein neuer Thread mit beginnt gfg3 Name und daher Drucke gfg3 .