logo

Dane wyjściowe programu Java | Zestaw 8

Poziom trudności : Mediator
Przewiduj wynik następujących programów Java.
Program 1:
 

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

Wyjście: 
 

Not equal


Wyjaśnienie: Ponieważ s1 i s2 to dwa różne obiekty, referencje nie są takie same i operator == porównuje referencje do obiektów. Dlatego wypisuje komunikat „Nie równy”, aby porównać rzeczywiste znaki w ciągu. Należy zastosować metodę równości(). 
 
Program 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();   } } 

Wyjście: 
 

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


Wyjaśnienie: Wiązanie statyczne (lub czas kompilacji) ma miejsce w przypadku metod statycznych. Tutaj p.whoAmI() wywołuje metodę statyczną, więc jest wywoływana podczas kompilacji, co skutkuje powiązaniem statycznym i wypisuje metodę w klasie Person. 
Mając na uwadze, że p.kim jesteś() wywołuje metodę Dziecko class, ponieważ domyślnie Java traktuje ją jako metodę wirtualną, tj. Powiązanie dynamiczne.
 
Program 3:  
 

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

Wyjście: 
 

First statement of try block 15 finally block Main method


Wyjaśnienie:  
Ponieważ nie ma wyjątku, blok catch nie jest wywoływany, ale Wreszcie blok jest zawsze wykonywany po bloku try, niezależnie od tego, czy wyjątek jest obsługiwany, czy nie.
  
Program 4:  
 

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

Wyjście: 
 

gfg1gfg1gfg3


Wyjaśnienie : Początkowo nowy wątek jest rozpoczynany od imienia gfg1 następnie w klasie drugiej pierwsza metoda uruchamiania uruchamia wątek o nazwie gfg1 następnie tworzony jest nowy wątek wywołujący metodę run, ale ponieważ nowy wątek można utworzyć tylko poprzez wywołanie metody start, tak aby poprzedni wątek wykonał akcję i ponownie gfg1 zostanie wydrukowany. Teraz tworzony jest nowy wątek poprzez wywołanie metody start, więc nowy wątek zaczyna się od gfg3 imię i stąd drukuje gfg3 .
 

program c dla tablicy dwuwymiarowej