logo

Izlaz Java programa | Set 9

Razina težine : Srednji

Predvidite izlaz sljedećih Java programa:

Program 1:

Java
class Gfg {  // constructor  Gfg()  {  System.out.println('Geeksforgeeks');  }    static Gfg a = new Gfg(); //line 8  public static void main(String args[])  {  Gfg b; //line 12  b = new Gfg();  } } 

Izlaz:



Geeksforgeeks  
Geeksforgeeks

Obrazloženje:

Znamo da se statičke varijable pozivaju kada se klasa učita, a statičke varijable se pozivaju samo jednom. Sada linija 13 rezultira stvaranjem objekta koji zauzvrat poziva konstruktor i 'Geeksforgeeks' se ispisuje drugi put. Da se u retku 8 ne bi koristila statička varijabla, objekt bi bio pozvan rekurzivno beskonačno što bi dovelo do pogreške StackOverFlow.

koliko tipki imaju tipkovnice

Program 2:

Java
class Gfg {  static int num;  static String mystr;  // constructor  Gfg()  {  num = 100;  mystr = 'Constructor';  }  // First Static block  static  {  System.out.println('Static Block 1');  num = 68;  mystr = 'Block1';  }  // Second static block  static  {  System.out.println('Static Block 2');  num = 98;  mystr = 'Block2';  }  public static void main(String args[])  {  Gfg a = new Gfg();  System.out.println('Value of num = ' + a.num);  System.out.println('Value of mystr = ' + a.mystr);  } } 

Izlaz:

Static Block 1  
Static Block 2
Value of num = 100
Value of mystr = Constructor

Obrazloženje:

Statički blok se izvršava kada se klasa učita u memoriju. Klasa može imati više statičkih blokova koji se izvode u istom nizu u kojem su zapisani u programu.

Bilješka : Statičke metode mogu pristupiti varijablama klase bez korištenja objekta klase. Budući da se konstruktor poziva kada se kreira nova instanca, prvo se pozivaju statički blokovi, a nakon toga se poziva konstruktor. Da smo pokrenuli isti program bez korištenja objekta, konstruktor ne bi bio pozvan.  

Program 3:

Java
class superClass {  final public int calc(int a int b)  {  return 0;  } } class subClass extends superClass {  public int calc(int a int b)  {  return 1;  } } public class Gfg {  public static void main(String args[])  {  subClass get = new subClass();  System.out.println('x = ' + get.calc(0 1));  } } 

Izlaz:

Compilation fails. 

Obrazloženje:

Metoda calc() u klasi superClass je konačna i stoga se ne može nadjačati.  

Program 4:

Java
public class Gfg {  public static void main(String[] args)  {  Integer a = 128 b = 128;  System.out.println(a == b);  Integer c = 100 d = 100;  System.out.println(c == d);  } } 

Izlaz:

false  
true

Obrazloženje:

np podstava

U izvornom kodu Integer objekta pronaći ćemo metodu 'valueOf' u kojoj možemo vidjeti da se raspon Integer objekta nalazi od IntegerCache.low(-128) do IntegerCache.high(127). Stoga brojevi iznad 127 neće dati očekivani učinak. Raspon IntegerCachea može se promatrati iz izvornog koda klase IntegerCache.