logo

Izhod programa Java | Komplet 9

Stopnja težavnosti : Srednje

Predvidi izhod naslednjih programov Java:

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

Izhod:



Geeksforgeeks  
Geeksforgeeks

Pojasnilo:

Vemo, da se statične spremenljivke kličejo, ko se razred naloži, statične spremenljivke pa se kličejo samo enkrat. Zdaj se v 13. vrstici ustvari objekt, ki nato pokliče konstruktor in 'Geeksforgeeks' se natisne drugič. Če v vrstici 8 ne bi bila uporabljena statična spremenljivka, bi bil objekt poklican rekurzivno neskončno, kar bi povzročilo napako StackOverFlow.

nadzorovano strojno učenje

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

Izhod:

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

Pojasnilo:

Statični blok se izvede, ko je razred naložen v pomnilnik. Razred ima lahko več statičnih blokov, ki se izvajajo v istem zaporedju, v katerem so bili zapisani v program.

Opomba : statične metode lahko dostopajo do spremenljivk razreda brez uporabe predmeta razreda. Ker se konstruktor pokliče, ko se ustvari nov primerek, se najprej pokličejo statični bloki, nato pa se pokliče konstruktor. Če bi zagnali isti program brez uporabe objekta, konstruktor ne bi bil poklican.  

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

Izhod:

Compilation fails. 

Pojasnilo:

Metoda calc() v razredu superClass je končna in je zato ni mogoče preglasiti.  

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

Izhod:

false  
true

Pojasnilo:

V izvorni kodi objekta Integer bomo našli metodo 'valueOf', v kateri lahko vidimo, da obseg objekta Integer leži od IntegerCache.low(-128) do IntegerCache.high(127). Zato številke nad 127 ne bodo dale pričakovanega učinka. Razpon IntegerCache je mogoče opazovati iz izvorne kode razreda IntegerCache.

alternativa xampp