logo

A Java program kimenete | 8. készlet

Nehézségi szint : Közepes
Megjósolja a következő Java programok kimenetét.
1. program:
 

Java
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');  } } 

Kimenet: 
 

Not equal


Magyarázat: Mivel s1 és s2 két különböző objektum, a hivatkozások nem ugyanazok, és az == operátor összehasonlítja az objektumhivatkozást. Tehát a „Nem egyenlő” szöveget írja ki, hogy összehasonlítsa a tényleges karaktereket a string .equals() metódusával. 
 
2. program:  
 



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();   } } 

Kimenet: 
 

Inside static method Person(whoAmI) Kid(who) Kid(whoAreYou)


Magyarázat: Statikus kötés (vagy fordítási idő) történik statikus metódusoknál. Itt p.whoAmI() meghívja a statikus metódust, tehát fordítási idő alatt hívják meg, így statikus kötést eredményez, és kiírja a metódust a Person osztályba. 
mivel p.whoAreYou() behívja a módszert Kölyök osztály, mivel alapértelmezés szerint a Java virtuális metódusnak, azaz dinamikus kötésnek veszi.
 
3. program:  
 

Java
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');  } } 

Kimenet: 
 

First statement of try block 15 finally block Main method


Magyarázat:  
Mivel nincs kivétel, nem a catch blokkot hívják meg, hanem a végül blokk mindig végrehajtásra kerül egy try blokk után, függetlenül attól, hogy a kivételt kezelték-e vagy sem.
  
4. program:  
 

Java
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();  } } 

Kimenet: 
 

gfg1gfg1gfg3


Magyarázat: Kezdetben az új szál névvel indul gfg1 majd a kettes osztályban az első futtatási metódus a névvel futtatja a szálat gfg1 majd ezután jön létre egy új szál a futtatási metódus meghívásával, de mivel új szál csak a start metódus meghívásával hozható létre, így az előző szál elvégzi a műveletet és újra gfg1 Most egy új szál jön létre a start metódus meghívásával, így egy új szál ezzel kezdődik gfg3 név, és így nyomatok gfg3 .
 

véletlenszerű sql sorrendben