Java Programının Çıktısı | 8'i ayarla

Zorluk seviyesi : Orta seviye
Aşağıdaki Java Programlarının çıktısını tahmin edin.
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'  );      }   }   

Çıkış: 
 

Not equal 


Açıklama: s1 ve s2 iki farklı nesne olduğundan referanslar aynı değildir ve == operatörü nesne referansını karşılaştırır. Bu nedenle 'Eşit değil' yazdırır, dizedeki gerçek karakterleri karşılaştırmak için .equals() yöntemi kullanılmalıdır. 
 
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  ();         }   }   

Çıkış: 
 

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


Açıklama: Statik yöntemler için statik bağlama (veya derleme zamanı) gerçekleşir. Burada p.whoAmI() statik yöntemi çağırır, böylece derleme zamanı sırasında çağrılır, dolayısıyla statik bağlamayla sonuçlanır ve yöntemi Person sınıfında yazdırır. 
Halbuki s.whoAreYou() yöntemi çağırır Çocuk sınıf, çünkü varsayılan olarak Java bunu sanal bir yöntem, yani dinamik bağlama olarak alır.
 
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'  );      }   }   

Çıkış: 
 

First statement of try block 15 finally block Main method 


Açıklama:  
Bir istisna olmadığından catch bloğu çağrılmaz ancak Sonunda istisnanın ele alınıp alınmamasına bakılmaksızın blok her zaman bir try bloğundan sonra yürütülür.
  
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  ();      }   }   

Çıkış: 
 

gfg1gfg1gfg3 


Açıklama : Başlangıçta yeni Konu ismiyle başlatılır gfg1 daha sonra Sınıf İki'de ilk çalıştırma yöntemi iş parçacığını adı ile çalıştırır. gfg1 daha sonra run yöntemini çağıran yeni bir iş parçacığı oluşturulur, ancak yeni bir iş parçacığı yalnızca start yöntemini çağırarak oluşturulabildiğinden, önceki iş parçacığı işlemi yapar ve tekrar yapar. gfg1 yazdırılır. Artık start yöntemi çağrılarak yeni bir iş parçacığı oluşturulur, böylece yeni bir iş parçacığı şununla başlar: gfg3 isim ve dolayısıyla baskılar gfg3 .