Java-ohjelman tulos | Sarja 8

Vaikeustaso : Keskitaso
Ennusta seuraavien Java-ohjelmien tulos.
Ohjelma 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'  );      }   }   

Lähtö: 
 

Not equal 


Selitys: Koska s1 ja s2 ovat kaksi eri objektia, viittaukset eivät ole samoja ja ==-operaattori vertaa objektiviittausta. Joten se tulostaa "Ei yhtä suuri" vertaillakseen todellisia merkkejä string .equals() -menetelmää on käytettävä. 
 
Ohjelma 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  ();         }   }   

Lähtö: 
 

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


Selitys: Staattinen sidonta (tai käännösaika) tapahtuu staattisille menetelmille. Tässä p.whoAmI() kutsuu staattista menetelmää, joten sitä kutsutaan käännösaikana, mikä johtaa staattiseen sidontaan ja tulostaa menetelmän Person-luokassa. 
Sitä vastoin p.whoAreYou() kutsuu menetelmän sisään Lapsi luokkaan, koska oletuksena Java käyttää sitä virtuaalisena menetelmänä eli dynaamisena sidontana.
 
Ohjelma 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'  );      }   }   

Lähtö: 
 

First statement of try block 15 finally block Main method 


Selitys:  
Koska poikkeuksia ei ole, catch-lohkoa ei kutsuta, vaan vihdoinkin lohko suoritetaan aina try-lohkon jälkeen riippumatta siitä, käsitelläänkö poikkeusta vai ei.
  
Ohjelma 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  ();      }   }   

Lähtö: 
 

gfg1gfg1gfg3 


Selitys: Aluksi uusi ketju aloitetaan nimellä gfg1 sitten luokassa Two ensimmäisen ajon menetelmä ajaa säiettä nimellä gfg1 sen jälkeen luodaan uusi säie kutsuen ajomenetelmää mutta koska uusi säie voidaan luoda kutsumalla vain aloitusmenetelmää niin edellinen säie tekee toiminnon ja uudelleen gfg1 on tulostettu. Nyt uusi säie luodaan kutsumalla aloitusmenetelmää, jolloin uusi säie alkaa gfg3 nimi ja siten tulosteet gfg3 .