logo

Utdata från Java-program | Set 8

Svårighetsgrad : Mellanliggande
Förutsäg resultatet av följande Java-program.
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');  } } 

Produktion: 
 

Not equal


Förklaring: Eftersom s1 och s2 är två olika objekt är referenserna inte desamma och operatorn == jämför objektreferens. Så den skriver ut "Inte lika" för att jämföra de faktiska tecknen i strängen .equals()-metoden måste användas. 
 
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();   } } 

Produktion: 
 

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


Förklaring: Statisk bindning (eller kompileringstid) sker för statiska metoder. Här p.whoAmI() anropar den statiska metoden så att den anropas under kompileringstiden, vilket resulterar i statisk bindning och skriver ut metoden i klassen Person. 
Medan p.whoAreYou() kallar in metoden Unge klass eftersom Java som standard tar det som en virtuell metod, dvs dynamisk bindning.
 
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');  } } 

Produktion: 
 

First statement of try block 15 finally block Main method


Förklaring:  
Eftersom det inte finns något undantag kallas inte catch-blocket utan den slutligen blocket exekveras alltid efter ett försöksblock oavsett om undantaget hanteras eller inte.
  
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();  } } 

Produktion: 
 

gfg1gfg1gfg3


Förklaring: Till en början startas en ny tråd med namn gfg1 sedan i klass två kör den första körningsmetoden tråden med namnet gfg1 sedan skapas en ny tråd som anropar körmetoden men eftersom en ny tråd kan skapas genom att bara anropa startmetoden så utför den föregående tråden åtgärden och igen gfg1 skrivs ut. Nu skapas en ny tråd genom att anropa startmetoden så att en ny tråd börjar med gfg3 namn och därav tryck gfg3 .
 

string array skapande i java