Sværhedsgrad: Mellem
Forudsige output fra følgende Java-programmer.
java arkitektur
Program 1: Konstruktørkæde
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(); } }
Produktion
a b c
Forklaring: Når et 'tredje' objekt oprettes, før standardkonstruktøren kaldes Tredje klasse standard konstruktøren af super klasse dvs. Anden klasse kaldes og så igen før standardkonstruktøren af superklassens standardkonstruktør af Først klasse kaldes. Og derfor er output i rækkefølgen a b c.
Program 2: Variabel initialisering og konstruktørudførelse
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); } }
Produktion
10 200 400
Forklaring: Da den i 'Anden' klasse ikke har sit eget 'i', er variablen arvet fra superklassen. Også konstruktøren af forælder kaldes, når vi skaber et objekt af Anden.
Program 3: instans af med iteratorer
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); } }
Produktion
false true false
Forklaring: De iterator() metoden returnerer en iterator over elementerne i listen i den rigtige rækkefølge, den returnerer ikke et List- eller ListIterator-objekt. EN ListIterator kan fås ved at påberåbe sig listIterator-metoden.
få array længde i c
Program 4: Trådstart og stop undtagelse
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(); } }
Produktion:
Run Time Exception
Forklaring: En tråd kan ikke startes mere end én gang. Ringer starte() metode på en stoppet tråd årsager IllegalThreadStateException .