Poziom trudności: Średnio zaawansowany
Przewiduj wyjście następujących programów Java.
konwertuj wartość logiczną na ciąg
Program 1: Łączenie konstruktorów
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(); } }
Wyjście
a b c
Wyjaśnienie: Kiedy tworzony jest obiekt „Trzeci” przed wywołaniem domyślnego konstruktora Trzeci class domyślny konstruktor superklasy, tj. Drugi class, a następnie ponownie przed domyślnym konstruktorem domyślnego konstruktora superklasy Pierwszy klasa się nazywa. Zatem wynik jest w kolejności a b c.
Program 2: Inicjowanie zmiennych i wykonanie konstruktora
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); } }
Wyjście
10 200 400
Wyjaśnienie: Ponieważ w klasie „Druga” nie ma ona własnego „i”, zmienna jest dziedziczona z superklasy. Konstruktor rodzica jest również wywoływany, gdy tworzymy obiekt Drugi.
Program 3: instancja z iteratorami
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); } }
Wyjście
false true false
Wyjaśnienie: The iterator() metoda zwraca iterator po elementach listy w odpowiedniej kolejności, nie zwraca obiektu List ani ListIterator. A ListIterator można uzyskać wywołując metodę listIterator.
metoda tostringowa
Program 4: Wyjątek uruchomienia i zatrzymania wątku
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(); } }
Wyjście:
Run Time Exception
Wyjaśnienie: Wątek nie może zostać rozpoczęty więcej niż raz. Powołanie start() metoda w zatrzymanym wątku powoduje Wyjątek IllegalThreadStateException .