Utdata fra Java-program | Sett 8
Vanskelighetsgrad : Middels
Forutsi produksjonen av følgende Java-programmer.
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' ); } }
Produksjon:
Not equal
Forklaring: Siden s1 og s2 er to forskjellige objekter, er ikke referansene de samme, og ==-operatoren sammenligner objektreferanse. Så den skriver ut 'Ikke lik' for å sammenligne de faktiske tegnene i strengen .equals()-metoden må brukes.
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 (); } }
Produksjon:
Inside static method Person(whoAmI) Kid(who) Kid(whoAreYou)
Forklaring: Statisk binding (eller kompileringstid) skjer for statiske metoder. Her p.whoAmI() kaller den statiske metoden slik at den kalles under kompileringstiden og resulterer derfor i statisk binding og skriver ut metoden i Person-klassen.
Mens p.whoAreYou() kaller metoden inn Gutt klasse siden Java som standard tar det som en virtuell metode, dvs. dynamisk binding.
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' ); } }
Produksjon:
First statement of try block 15 finally block Main method
Forklaring:
Siden det ikke er noe unntak, kalles ikke catch-blokken, men den endelig blokk utføres alltid etter en prøveblokk, enten unntaket håndteres eller ikke.
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 (); } }
Produksjon:
gfg1gfg1gfg3
Forklaring: Opprinnelig startes ny tråd med navn gfg1 så i klasse to kjører den første kjøringsmetoden tråden med navnet gfg1 deretter opprettes en ny tråd som kaller kjøringsmetoden, men siden en ny tråd kan opprettes ved å kalle startmetoden bare så utfører den forrige tråden handlingen og igjen gfg1 er skrevet ut.Nå opprettes en ny tråd ved å kalle startmetoden slik at en ny tråd starter med gfg3 navn og dermed utskrifter gfg3 .