Излаз Јава програма | Сет 8

Ниво тежине : Интермедиате
Предвидите излаз следећих Јава програма.
Програм 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'  );      }   }   

Излаз: 
 

Not equal 


Објашњење: Пошто су с1 и с2 два различита објекта, референце нису исте и оператор == упоређује референцу објекта. Дакле, штампа 'Није једнако' за упоређивање стварних знакова у стрингу .екуалс() метода се мора користити. 
 
Програм 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  ();         }   }   

Излаз: 
 

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


Објашњење: Статичко везивање (или време компајлирања) се дешава за статичке методе. Ево п.вхоАмИ() позива статичку методу тако да се она позива током времена компајлирања, што доводи до статичког повезивања и штампа методу у класи Персон. 
Док п.вхоАреИоу() позива метод у Кид класе пошто је Јава подразумевано узима као виртуелни метод, тј. динамичко везивање.
 
Програм 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'  );      }   }   

Излаз: 
 

First statement of try block 15 finally block Main method 


Објашњење:  
Пошто нема изузетка, блок цатцх се не позива већ коначно блок се увек извршава после блока покушаја без обзира да ли се обрађује изузетак или не.
  
Програм 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  ();      }   }   

Излаз: 
 

gfg1gfg1gfg3 


Објашњење: У почетку се нова нит покреће именом гфг1 онда у класи два метода првог покретања покреће нит са именом гфг1 онда се након тога креира нова нит која позива методу рун, али пошто се нова нит може креирати само позивањем старт методе тако да претходна нит изврши акцију и поново гфг1 се штампа. Сада се нова нит креира позивањем старт методе тако да нова нит почиње са гфг3 назив и отуда отисци гфг3 .