Рівень складності: середній
Передбачте вихід наступних програм Java.
r мовою c
Програма 1: З’єднання конструкторів
Java
class First { public First() { System.out.println('a'); } } class Second extends First { public Second() { System.out.println('b'); } } class Third extends Second { public Third() { System.out.println('c'); } } public class MainClass { public static void main(String[] args) { Third c = new Third(); } }
Вихід
a b c
Пояснення: Коли об'єкт "Третій" створюється перед викликом конструктора за замовчуванням По-третє class типовий конструктор суперкласу, тобто друге викликається клас, а потім знову перед конструктором за замовчуванням суперкласу конструктор за замовчуванням перше клас називається. І, отже, результат буде в порядку a b c.
Програма 2: Ініціалізація змінної та виконання конструктора
Javaclass First { int i = 10; public First(int j) { System.out.println(i); this.i = j * 10; } } class Second extends First { public Second(int j) { super(j); System.out.println(i); this.i = j * 20; } } public class MainClass { public static void main(String[] args) { Second n = new Second(20); System.out.println(n.i); } }
Вихід
10 200 400
Пояснення: Оскільки в «другому» класі він не має власного «i», змінна успадковується від суперкласу. Також конструктор батьківського елемента викликається, коли ми створюємо об’єкт друге.
Програма 3: instanceof з ітераторами
Javaimport java.util.*; class Geeks { public static void main (String[] args) { Object i = new ArrayList().iterator(); System.out.print((i instanceof List) + ' '); System.out.print((i instanceof Iterator) + ' '); System.out.print(i instanceof ListIterator); } }
Вихід
false true false
Пояснення: The ітератор() метод повертає ітератор над елементами списку в належній послідовності, він не повертає об’єкт List або ListIterator. А ListIterator можна отримати, викликавши метод listIterator.
файлова система в linux
Програма 4: Виняток для початку та зупинки потоку
Javaclass ThreadEx extends Thread { public void run() { System.out.print('Hello...'); } public static void main(String args[]) { ThreadEx T1 = new ThreadEx(); T1.start(); T1.stop(); T1.start(); } }
Вихід:
Run Time Exception
Пояснення: Потік не може бути запущений більше одного разу. Дзвінок початок() метод для зупиненого потоку викликає IllegalThreadStateException .