logo

Utdata fra Java-program | Sett 9

Vanskelighetsgrad : Middels

Forutsi produksjonen av følgende Java-programmer:

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

Produksjon:



Geeksforgeeks  
Geeksforgeeks

Forklaring:

Vi vet at statiske variabler kalles når en klasse laster og statiske variabler kalles bare én gang. Nå resulterer linje 13 til opprettelsen av objektet som inturn kaller konstruktøren og 'Geeksforgeeks' skrives ut andre gang. Hvis i linje 8 statisk variabel ikke ville blitt brukt, ville objektet blitt kalt rekursivt uendelig, noe som fører til StackOverFlow-feil.

eksempel binært søketre

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

Produksjon:

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

Forklaring:

Statisk blokk blir utført når klassen lastes inn i minnet. En klasse kan ha flere statiske blokker som kjøres i samme sekvens som de er skrevet inn i programmet.

Note : Statiske metoder kan få tilgang til klassevariabler uten å bruke objektet til klassen. Siden konstruktør kalles når en ny forekomst opprettes, kalles først de statiske blokkene og deretter kalles konstruktøren. Hvis vi ville ha kjørt det samme programmet uten å bruke objekt, ville konstruktøren ikke blitt kalt.  

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

Produksjon:

Compilation fails. 

Forklaring:

Metoden calc() i klassen superClass er endelig og kan derfor ikke overstyres.  

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

Produksjon:

false  
true

Forklaring:

I kildekoden til Integer-objektet vil vi finne en metode 'valueOf' der vi kan se at rekkevidden til Integer-objektet ligger fra IntegerCache.low(-128) til IntegerCache.high(127). Derfor vil tallene over 127 ikke gi den forventede utgangen. Rekkevidden av IntegerCache kan observeres fra kildekoden til IntegerCache-klassen.

java print