Úroveň obtížnosti: středně pokročilá
Předpovězte výstup následujících programů Java.
mvc java
Program 1: Řetězení konstruktorů
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(); } }
Výstup
a b c
Vysvětlení: Když je vytvořen 'Třetí' objekt před voláním výchozího konstruktoru Třetí class výchozí konstruktor supertřídy, tj. Druhý je volána třída a poté znovu před výchozí konstruktor supertřídy výchozí konstruktor První třída se nazývá. A proto je výstup v pořadí a b c.
Program 2: Inicializace proměnných a provádění konstruktoru
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); } }
Výstup
10 200 400
Vysvětlení: Protože ve třídě 'Second' nemá své vlastní 'i', je proměnná zděděna z nadtřídy. Také konstruktor rodiče je volán, když vytváříme objekt Druhý.
Program 3: instanceof s iterátory
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); } }
Výstup
false true false
Vysvětlení: The iterátor() metoda vrací iterátor nad prvky v seznamu ve správném pořadí, nevrací objekt List nebo ListIterator. A ListIterator lze získat vyvoláním metody listIterator.
používání internetu
Program 4: Výjimka Start a Stop vlákna
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(); } }
výstup:
Run Time Exception
Vysvětlení: Vlákno nelze spustit více než jednou. Povolání start() metoda na zastaveném vláknu způsobuje IllegalThreadStateException .