Utdata från Java-program | Set 8

Svårighetsgrad : Mellanliggande
Förutsäg resultatet av följande Java-program.
Program 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'  );      }   }   

Produktion: 
 

Not equal 


Förklaring: Eftersom s1 och s2 är två olika objekt är referenserna inte desamma och operatorn == jämför objektreferens. Så den skriver ut "Inte lika" för att jämföra de faktiska tecknen i strängen .equals()-metoden måste användas. 
 
Program 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  ();         }   }   

Produktion: 
 

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


Förklaring: Statisk bindning (eller kompileringstid) sker för statiska metoder. Här p.whoAmI() anropar den statiska metoden så att den anropas under kompileringstiden, vilket resulterar i statisk bindning och skriver ut metoden i klassen Person. 
Medan p.whoAreYou() kallar in metoden Unge klass eftersom Java som standard tar det som en virtuell metod, dvs dynamisk bindning.
 
Program 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'  );      }   }   

Produktion: 
 

First statement of try block 15 finally block Main method 


Förklaring:  
Eftersom det inte finns något undantag kallas inte catch-blocket utan den slutligen blocket exekveras alltid efter ett försöksblock oavsett om undantaget hanteras eller inte.
  
Program 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  ();      }   }   

Produktion: 
 

gfg1gfg1gfg3 


Förklaring: Till en början startas en ny tråd med namn gfg1 sedan i klass två kör den första körningsmetoden tråden med namnet gfg1 sedan skapas en ny tråd som anropar körmetoden men eftersom en ny tråd kan skapas genom att bara anropa startmetoden så utför den föregående tråden åtgärden och igen gfg1 skrivs ut. Nu skapas en ny tråd genom att anropa startmetoden så att en ny tråd börjar med gfg3 namn och därav tryck gfg3 .