Java プログラムの出力 |セット8
難易度 : 中級
以下の Java プログラムの出力を予測します。
プログラム 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' ); } }
出力:
Not equal
説明: s1 と s2 は 2 つの異なるオブジェクトであるため、参照は同じではなく、== 演算子はオブジェクト参照を比較します。したがって、文字列内の実際の文字を比較するには、「等しくない」と出力されます。equals() メソッドを使用する必要があります。
プログラム 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 (); } }
出力:
Inside static method Person(whoAmI) Kid(who) Kid(whoAreYou)
説明: 静的バインディング (またはコンパイル時) は静的メソッドに対して発生します。ここ p.whoAmI() 静的メソッドを呼び出します。このメソッドはコンパイル時に呼び出されるため、静的バインドが行われ、メソッドが Person クラスに出力されます。
一方 p.whoAreYou() でメソッドを呼び出します 子供 Java はデフォルトでこのクラスを仮想メソッド、つまり動的バインディングとして受け取るためです。
プログラム 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' ); } }
出力:
First statement of try block 15 finally block Main method
説明:
例外がないため、catch ブロックは呼び出されませんが、 ついに 例外が処理されるかどうかに関係なく、ブロックは常に try ブロックの後に実行されます。
プログラム 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 (); } }
出力:
gfg1gfg1gfg3
説明 : 最初に新しいスレッドが名前で開始されます GFG1 次に、クラス 2 で、最初の run メソッドが名前のスレッドを実行します。 GFG1 その後、run メソッドを呼び出して新しいスレッドが作成されますが、新しいスレッドは start メソッドを呼び出すことによってのみ作成できるため、前のスレッドがアクションを実行して再度実行されます。 GFG1 これで、start メソッドを呼び出して新しいスレッドが作成され、新しいスレッドが開始されます。 GFG3 名前とそれによるプリント GFG3 。