Java-ohjelman tulos | Sarja 6
Vaikeustaso: Keskitaso
Ennusta seuraavien Java-ohjelmien tulos.
Ohjelma 1: Rakentajan ketjutus
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 (); } }
Lähtö
a b c
Selitys: Kun 'Kolmas'-objekti luodaan ennen kuin kutsutaan oletusmuodostajaa Kolmas class superluokan oletuskonstruktori eli Toinen luokkaa kutsutaan ja sitten ennen superluokan oletuskonstruktorin oletuskonstruktoria Ensimmäinen luokkaa kutsutaan. Ja tästä syystä tulos on järjestyksessä a b c.
Ohjelma 2: Muuttujan alustus ja konstruktorin suoritus
Java class 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 ); } }
Lähtö
10 200 400
Selitys: Koska 'toisessa' luokassa sillä ei ole omaa 'i':tä, muuttuja peritään superluokasta. Myös vanhempien konstruktoria kutsutaan, kun luomme objektin Toinen.
Ohjelma 3: instanceof with Iterators
Java import 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 ); } }
Lähtö
false true false
Selitys: The iteraattori() menetelmä palauttaa iteraattorin luettelon elementtien päälle oikeassa järjestyksessä, se ei palauta List- tai ListIterator-objektia. A ListIterator voidaan saada käynnistämällä listIterator-menetelmä.
Ohjelma 4: ketjun aloitus- ja lopetuspoikkeus
Java class 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 (); } }
Lähtö:
Run Time Exception
Selitys: Ketjua ei voi aloittaa useammin kuin kerran. Soittaminen aloita () menetelmä pysäytetyssä säikeessä aiheuttaa IllegalThreadStateException .