Schwierigkeitsgrad : Dazwischenliegend
Sagen Sie die Ausgabe der folgenden Java-Programme voraus.
Programm 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'); } }
Ausgabe:
Not equal
Erläuterung: Da es sich bei s1 und s2 um zwei unterschiedliche Objekte handelt, sind die Referenzen nicht identisch und der Operator == vergleicht die Objektreferenz. Daher wird „Ungleich“ ausgegeben, um die tatsächlichen Zeichen in der Zeichenfolge zu vergleichen. Es muss die Methode „equals()“ verwendet werden.
Programm 2:
Java
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(); } }
Ausgabe:
Inside static method Person(whoAmI) Kid(who) Kid(whoAreYou)
Erläuterung: Statische Bindung (oder Kompilierungszeit) erfolgt für statische Methoden. Hier p.whoAmI() Ruft die statische Methode auf, sodass sie während der Kompilierungszeit aufgerufen wird, was zu einer statischen Bindung führt und die Methode in der Person-Klasse ausgibt.
Wohingegen p.whoAreYou() ruft die Methode auf Kind Klasse, da Java sie standardmäßig als virtuelle Methode verwendet, d. h. als dynamische Bindung.
Programm 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'); } }
Ausgabe:
First statement of try block 15 finally block Main method
Erläuterung:
Da es keine Ausnahme gibt, wird der Catch-Block nicht aufgerufen, sondern der Endlich Der Block wird immer nach einem Try-Block ausgeführt, unabhängig davon, ob die Ausnahme behandelt wird oder nicht.
Programm 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(); } }
Ausgabe:
gfg1gfg1gfg3
Erläuterung : Zunächst wird ein neuer Thread mit dem Namen gestartet gfg1 Dann führt in der zweiten Klasse die erste Ausführungsmethode den Thread mit dem Namen aus gfg1 Danach wird ein neuer Thread mit der Methode „run“ erstellt. Da ein neuer Thread jedoch nur durch den Aufruf der Methode „start“ erstellt werden kann, führt der vorherige Thread die Aktion erneut aus gfg1 wird gedruckt. Nun wird durch Aufrufen der Startmethode ein neuer Thread erstellt, sodass ein neuer Thread mit beginnt gfg3 Name und daher Drucke gfg3 .
Schriftgrößen in Latex