Вихід програми 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 Пояснення: Тут змінна екземпляра класу name(num) така ж, як calc() ім'я локальної змінної методу (номер). Отже, для посилання на змінну екземпляра класу з calc() метод це використовується ключове слово. Так у заяві this.num = num * 10 в а представляє локальну змінну методу, значення якої дорівнює 2 і this.num представляє змінну екземпляра класу, початкове значення якої дорівнює 100. Тепер в printNum() метод, оскільки він не має локальної змінної, ім’я якої збігається зі змінною екземпляра класу, тому ми можемо безпосередньо використовувати в а хоча посилатися на змінну екземпляра this.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  ;      }   }   
Опції: A) Вихід є істинним, і MyStuff виконує контракт Object.equals(). B) Вихідні дані є false, і MyStuff виконує контракт Object.equals(). C) Результат є істинним, і MyStuff НЕ виконує контракт Object.equals(). D) Вихід є хибним, і MyStuff НЕ виконує контракт Object.equals(). відповідь: C) Результат є істинним, і MyStuff НЕ виконує контракт Object.equals(). Пояснення: як дорівнює (Object obj) Метод у класі Object порівнює два об’єкти на основі відношення еквівалентності. Але тут ми лише підтверджуємо, що об’єкт є нульовим чи ні, тому він не виконується Object.equals() договір. як м1 не має значення 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  ();      }   }   
Опції: A) альфа-бета b b B) альфа-бета a b C) бета-альфа b b D) бета-альфа a b відповідь: А) альфа-бета б б Пояснення: Заява нова бета-версія().go() виконується в два етапи. На першій фазі Бета називається конструктор класу. Немає члена екземпляра Бета клас. Так тепер Бета виконується конструктор класу. як Бета клас розширюється Альфа клас, тому дзвонити до Альфа конструктор класу як перший оператор за замовчуванням (розміщується компілятором). супер() в Бета конструктор класу. Тепер як одна змінна екземпляра ( типу ) присутній у Альфа клас, тому він отримає пам'ять і тепер Альфа конструктор класу виконується, а потім викликається return to Бета конструктор класу наступний оператор. Отже альфа-бета друкується. У другій фазі йти() метод викликається для цього об'єкта. Оскільки є лише одна змінна ( типу ) в об’єкті, значення якого становить a . Тому його буде змінено на b і надруковано двічі. The супер ключове слово тут ні до чого.   Програма 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) methodconcatenate str to s1 . The підрядок (індекс) метод повертає рядок від заданого індексу до кінця. Але оскільки немає жодної змінної String для зберігання повернутих рядків, її буде знищено. Зараз indexOf(рядок 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  ();      }   }   
Опції: A) Написання... B) Написання книги C) Написання коду D) Невдача компіляції відповідь: Б) Письмова книжка Пояснення: Оскільки статичні методи не можна перевизначати, не має значення, який об’єкт класу буде створено. як a є a Автор тип, на який посилається, завжди Автор метод класу називається. Якщо ми видалимо написати() метод від Автор тоді клас Письменник метод класу називається as Автор клас розширюється Письменник клас.