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

רמת קושי: בינוני חזה את הפלט של תוכניות Java הבאות. תוכנית 1: Java
   public     class   Calculator   {      int     num     =     100  ;      public     void     calc  (  int     num  )     {     this  .  num     =     num     *     10  ;     }      public     void     printNum  ()     {     System  .  out  .  println  (  num  );     }      public     static     void     main  (  String  []     args  )      {      Calculator     obj     =     new     Calculator  ();      obj  .  calc  (  2  );      obj  .  printNum  ();      }   }   
אפשרויות: א) 20 ב) 100 ג) 1000 ד) 2 תשובה: א) 20 הסבר: כאן משתנה המופע של המחלקה שם (num) זהה לזה calc() שיטה שם משתנה מקומי (num). אז להתייחסות למשתנה מופע מחלקה מ calc() שִׁיטָה זֶה נעשה שימוש במילת מפתח. אז בהצהרה this.num = num * 10 ב מייצג משתנה מקומי של השיטה שערכו הוא 2 ו זה.num מייצג משתנה מופע מחלקה שהערך ההתחלתי שלו הוא 100. עכשיו ב printNum() מתודה מכיוון שאין לה משתנה מקומי ששמו זהה למשתנה מופע המחלקה כך שנוכל להשתמש ישירות ב להתייחס למשתנה מופע למרות זה.num ניתן להשתמש.   תוכנית 2: Java
   public     class   MyStuff   {      String     name  ;      MyStuff  (  String     n  )     {     name     =     n  ;     }      public     static     void     main  (  String  []     args  )      {      MyStuff     m1     =     new     MyStuff  (  'guitar'  );      MyStuff     m2     =     new     MyStuff  (  'tv'  );      System  .  out  .  println  (  m2  .  equals  (  m1  ));      }      @Override      public     boolean     equals  (  Object     obj  )      {      MyStuff     m     =     (  MyStuff  )     obj  ;      if     (  m  .  name     !=     null  )     {     return     true  ;     }      return     false  ;      }   }   
אפשרויות: א) הפלט נכון ו-MyStuff ממלא את החוזה Object.equals() . ב) הפלט הוא שקר ו-MyStuff ממלא את החוזה Object.equals() . ג) הפלט נכון ו-MyStuff לא ממלא את החוזה Object.equals() . ד) הפלט הוא שקר ו-MyStuff לא ממלא את החוזה Object.equals(). תשובה: ג) הפלט נכון ו-MyStuff לא ממלא את החוזה Object.equals() . הסבר: כְּמוֹ שווה (Object obj) שיטה במחלקת Object משווה שני אובייקטים על בסיס יחס שקילות. אבל כאן אנחנו רק מאשרים שהאובייקט ריק או לא אז הוא לא מתקיים Object.equals() חוֹזֶה. כְּמוֹ m1 הוא לא null true יודפס.   תוכנית 3: Java
   class   Alpha   {      public     String     type     =     'a '  ;      public     Alpha  ()     {     System  .  out  .  print  (  'alpha '  );     }   }   public     class   Beta     extends     Alpha   {      public     Beta  ()     {     System  .  out  .  print  (  'beta '  );     }      void     go  ()      {      type     =     'b '  ;      System  .  out  .  print  (  this  .  type     +     super  .  type  );      }      public     static     void     main  (  String  []     args  )      {      new     Beta  ().  go  ();      }   }   
אפשרויות: א) אלפא בטא ב ב ב) אלפא בטא א ב ג) בטא אלפא ב ב ד) בטא אלפא א ב תשובה: א) אלפא בטא ב ב הסבר: ההצהרה new Beta().go() מבוצע בשני שלבים. בשלב ראשון בטא בנאי המחלקה נקרא. אין חבר מופע נוכח בו בטא מַחלָקָה. אז עכשיו בטא בנאי המחלקה מבוצע. כְּמוֹ בטא הכיתה מתארכת אלפא כיתה אז השיחה עוברת אלפא בנאי המחלקה כמשפט ראשון כברירת מחדל (הצבה על ידי המהדר) הוא סוּפֶּר() ב- בטא בנאי מחלקה. עכשיו בתור משתנה מופע אחד( סוּג ) קיים ב אלפא כיתה כדי שזה יקבל זיכרון ועכשיו אלפא מבוצע בנאי המחלקה ואז תקרא לחזור אל בטא ה-class constructor ההצהרה הבאה. כָּך אלפא בטא מודפס. בשלב שני לָלֶכֶת() שיטה נקראת על אובייקט זה. מכיוון שיש רק משתנה אחד( סוּג ) באובייקט שהערך שלו א . אז זה ישתנה ל ב והודפס פעמיים. ה מילת מפתח סופר כאן אין שום תועלת.   תוכנית 4: Java
   public     class   Test   {      public     static     void     main  (  String  []     args  )      {      StringBuilder     s1     =     new     StringBuilder  (  'Java'  );      String     s2     =     'Love'  ;      s1  .  append  (  s2  );      s1  .  substring  (  4  );      int     foundAt     =     s1  .  indexOf  (  s2  );      System  .  out  .  println  (  foundAt  );      }   }   
אפשרויות: א) -1 ב) 3 ג) 4 ד) א StringIndexOutOfBoundsException נזרק בזמן ריצה. תשובה: ג) 4 הסבר: append(String str) שיטה לשרשר את ה-str ל s1 . ה substring (int index) שיטה מחזירה את המחרוזת מהאינדקס הנתון עד הסוף. אבל מכיוון שאין משתנה מחרוזת לאחסון המחרוזת המוחזרת כך שהוא יושמד. עכשיו indexOf(String s2) שיטה להחזיר את המדד של המופע הראשון של s2 . אז 4 מודפס בתור s1='JavaLove'.   תוכנית 5: Java
   class   Writer   {      public     static     void     write  ()      {      System  .  out  .  println  (  'Writing...'  );      }   }   class   Author     extends     Writer   {      public     static     void     write  ()      {      System  .  out  .  println  (  'Writing book'  );      }   }   public     class   Programmer     extends     Author   {      public     static     void     write  ()      {      System  .  out  .  println  (  'Writing code'  );      }      public     static     void     main  (  String  []     args  )      {      Author     a     =     new     Programmer  ();      a  .  write  ();      }   }   
אפשרויות: א) כתיבה... ב) כתיבת ספר ג) כתיבת קוד ד) הידור נכשל תשובה: ב) ספר כתיבה הסבר: מכיוון שלא ניתן לעקוף מתודות סטטיות, זה לא משנה איזה אובייקט מחלקה נוצר. כְּמוֹ א הוא א מְחַבֵּר סוג הפניה כל כך תמיד מְחַבֵּר שיטת המחלקה נקראת. אם נסיר לִכתוֹב() שיטה מ מְחַבֵּר כיתה אז סוֹפֵר שיטת class נקראת as מְחַבֵּר הכיתה מתארכת סוֹפֵר מַחלָקָה.