logo

Output af Java-program | Sæt 9

Sværhedsgrad : Mellem

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

Produktion:



Geeksforgeeks  
Geeksforgeeks

Forklaring:

Vi ved, at statiske variable kaldes, når en klasse indlæses, og statiske variable kaldes kun én gang. Nu resulterer linje 13 til oprettelse af objekt, som inturn kalder konstruktøren, og 'Geeksforgeeks' udskrives anden gang. Hvis statisk variabel i linje 8 ikke ville være blevet brugt, ville objektet være blevet kaldt rekursivt uendeligt, hvilket fører til StackOverFlow-fejl.

eksempel binært søgetræ

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

Produktion:

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

Forklaring:

Statisk blok bliver udført, når klassen indlæses i hukommelsen. En klasse kan have flere statiske blokke, som udføres i samme rækkefølge, som de er blevet skrevet ind i programmet.

Note : Statiske metoder kan få adgang til klassevariabler uden at bruge klassens objekt. Da konstruktør kaldes, når en ny instans oprettes, så kaldes først de statiske blokke og derefter kaldes konstruktøren. Hvis vi ville have kørt det samme program uden at bruge objekt, ville konstruktøren ikke være blevet kaldt.  

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

Produktion:

Compilation fails. 

Forklaring:

Metoden calc() i klassen superClass er endelig og kan derfor ikke tilsidesættes.  

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

Produktion:

false  
true

Forklaring:

I kildekoden til Integer-objektet vil vi finde en metode 'valueOf', hvori vi kan se, at området for Integer-objektet ligger fra IntegerCache.low(-128) til IntegerCache.high(127). Derfor vil tallene over 127 ikke give det forventede output. Rækkevidden af ​​IntegerCache kan observeres fra kildekoden til IntegerCache-klassen.

java print