logo

Вихід програми 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 Автор клас розширюється Письменник клас.