logo

Вихід програми Java | Набір 8

Рівень складності : Середній
Передбачте вихід наступних програм Java.
Програма 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');  } } 

Вихід: 
 

Not equal


Пояснення: Оскільки s1 і s2 є різними об’єктами, посилання не однакові, і оператор == порівнює посилання на об’єкт. Таким чином, для порівняння фактичних символів у рядку виводиться «Не дорівнює», необхідно використовувати метод .equals(). 
 
Програма 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();   } } 

Вихід: 
 

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


Пояснення: Статичне зв’язування (або час компіляції) відбувається для статичних методів. тут p.whoAmI() викликає статичний метод, тому він викликається під час компіляції, отже, призводить до статичного зв’язування та друкує метод у класі Person. 
Тоді як p.whoAreYou() викликає метод in малюк оскільки за замовчуванням Java сприймає його як віртуальний метод, тобто динамічне зв’язування.
 
Програма 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');  } } 

Вихід: 
 

First statement of try block 15 finally block Main method


Пояснення:  
Оскільки винятків немає, блок catch не викликається, а викликається нарешті блок завжди виконується після блоку try, незалежно від того, оброблено виняток чи ні.
  
Програма 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();  } } 

Вихід: 
 

gfg1gfg1gfg3


Пояснення: Спочатку новий ланцюжок починається з іменем gfg1 тоді в класі Two перший запущений метод запускає потік з іменем gfg1 тоді після цього створюється новий потік із викликом методу run, але оскільки новий потік можна створити лише за допомогою виклику методу start, тому дію виконує попередній потік і знову gfg1 друкується. Тепер новий потік створюється шляхом виклику методу start, щоб новий потік починався з gfg3 назву і, отже, відбитки gfg3 .
 

місія неможлива всі фільми