Izhod programa Java | Komplet 8
Stopnja težavnosti : Srednje
Predvidi izhod naslednjih programov Java.
Program 1:
class GfG { public static void main ( String args [] ) { String s1 = new String ( 'geeksforgeeks' ); String s2 = new String ( 'geeksforgeeks' ); if ( s1 == s2 ) System . out . println ( 'Equal' ); else System . out . println ( 'Not equal' ); } }
Izhod:
Not equal
Pojasnilo: Ker sta s1 in s2 dva različna objekta, reference niso enake in operator == primerja referenco objekta. Zato natisne 'Ni enako' za primerjavo dejanskih znakov v nizu. Uporabiti je treba metodo .equals().
Program 2:
class Person { private void who () { System . out . println ( 'Inside private method Person(who)' ); } public static void whoAmI () { System . out . println ( 'Inside static method Person(whoAmI)' ); } public void whoAreYou () { who (); System . out . println ( 'Inside virtual method Person(whoAreYou)' ); } } class Kid extends Person { private void who () { System . out . println ( 'Kid(who)' ); } public static void whoAmI () { System . out . println ( 'Kid(whoAmI)' ); } public void whoAreYou () { who (); System . out . println ( 'Kid(whoAreYou)' ); } } public class Gfg { public static void main ( String args [] ) { Person p = new Kid (); p . whoAmI (); p . whoAreYou (); } }
Izhod:
Inside static method Person(whoAmI) Kid(who) Kid(whoAreYou)
Pojasnilo: Statična vezava (ali čas prevajanja) se zgodi za statične metode. Tukaj p.kdoSem() pokliče statično metodo, tako da se kliče med časom prevajanja, zato povzroči statično vezavo in natisne metodo v razredu osebe.
Ker p.kdo si() prikliče metodo noter Otrok razred, saj ga Java privzeto obravnava kot virtualno metodo, tj. dinamično vezavo.
Program 3:
class GfG { public static void main ( String args [] ) { try { System . out . println ( 'First statement of try block' ); int num = 45 / 3 ; System . out . println ( num ); } catch ( Exception e ) { System . out . println ( 'Gfg caught Exception' ); } finally { System . out . println ( 'finally block' ); } System . out . println ( 'Main method' ); } }
Izhod:
First statement of try block 15 finally block Main method
Pojasnilo:
Ker ni nobene izjeme, se blok catch ne kliče, ampak končno blok se vedno izvede po poskusnem bloku, ne glede na to, ali je izjema obravnavana ali ne.
Program 4:
class One implements Runnable { public void run () { System . out . print ( Thread . currentThread (). getName ()); } } class Two implements Runnable { public void run () { new One (). run (); new Thread ( new One () 'gfg2' ). run (); new Thread ( new One () 'gfg3' ). start (); } } class Three { public static void main ( String [] args ) { new Thread ( new Two () 'gfg1' ). start (); } }
Izhod:
gfg1gfg1gfg3
Pojasnilo: Sprva se nova nit začne z imenom gfg1 potem v razredu Two prva zagnana metoda zažene nit z imenom gfg1 po tem se ustvari nova nit, ki kliče metodo run, a ker je novo nit mogoče ustvariti samo s klicem metode start, prejšnja nit izvede dejanje in znova gfg1 se natisne. Zdaj se s klicem metode start ustvari nova nit, tako da se nova nit začne z gfg3 ime in s tem tudi tisk gfg3 .