פלט של תוכנית Java | סט 8

רמת קושי : בינוני
חזה את הפלט של תוכניות Java הבאות.
תוכנית 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 


הֶסבֵּר: מכיוון ש- s1 ו- s2 הם שני אובייקטים שונים, ההפניות אינן זהות והאופרטור == משווה התייחסות לאובייקט. אז זה מדפיס 'לא שווה' כדי להשוות את התווים בפועל בשיטת .equals() מחרוזת יש להשתמש. 
 
תוכנית 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) 


הֶסבֵּר: כריכה סטטית (או זמן קומפילציה) מתרחשת עבור שיטות סטטיות. כָּאן p.whoAmI() קורא למתודה הסטטית כך שהיא נקראת בזמן הקומפילציה ומכאן מביאה לכריכה סטטית ומדפיסה את השיטה במחלקה Person. 
ואילו p.whoAreYou() קורא לשיטה פנימה יֶלֶד מחלקה שכן כברירת מחדל Java לוקחת אותה כשיטה וירטואלית כלומר כריכה דינמית.
 
תוכנית 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 


הֶסבֵּר:  
מכיוון שאין יוצא מן הכלל לבלוק ה-catch לא נקרא אלא ה לְבָסוֹף בלוק מבוצע תמיד לאחר חסימת ניסיון בין אם החריגה מטופלת או לא.
  
תוכנית 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 


הסבר: בהתחלה שרשור חדש מתחיל עם השם gfg1 ואז ב-class Two שיטת הריצה הראשונה מריץ את השרשור עם השם gfg1 ואז אחרי זה נוצר שרשור חדש שקורא לשיטת הפעלה אבל מכיוון שניתן ליצור שרשור חדש על ידי קריאה לשיטת התחל בלבד אז השרשור הקודם עושה את הפעולה ושוב gfg1 מודפס. כעת נוצר שרשור חדש על ידי קריאה לשיטת ההתחלה כך שרשור חדש מתחיל עם gfg3 שם ומכאן הדפסים gfg3 .