logo

Ieșirea programului Java | Setul 9

Nivel de dificultate : Intermediar

Preziceți rezultatul următoarelor programe Java:

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

Ieșire:



Geeksforgeeks  
Geeksforgeeks

Explicaţie:

Știm că variabilele statice sunt apelate atunci când se încarcă o clasă, iar variabilele statice sunt apelate o singură dată. Acum, din linia 13 rezultă crearea unui obiect care la rândul său apelează la constructor și „Geeksforgeeks” este tipărit a doua oară. Dacă în linia 8 variabila statică nu ar fi fost utilizată, obiectul ar fi fost apelat recursiv la infinit, ducând la eroarea StackOverFlow.

câte taste au tastaturile

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

Ieșire:

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

Explicaţie:

Blocul static este executat atunci când clasa este încărcată în memorie. O clasă poate avea mai multe blocuri statice care sunt executate în aceeași secvență în care au fost scrise în program.

Nota : Metodele statice pot accesa variabilele clasei fără a utiliza obiectul clasei. Deoarece constructorul este apelat atunci când este creată o instanță nouă, în primul rând sunt apelate blocurile statice și după aceea este apelat constructorul. Dacă am fi rulat același program fără a folosi obiect, constructorul nu ar fi fost apelat.  

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

Ieșire:

stratul de rețea în rețelele de calculatoare
Compilation fails. 

Explicaţie:

Metoda calc() din clasa superClass este finală și, prin urmare, nu poate fi suprascrisă.  

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

Ieșire:

false  
true

Explicaţie:

În codul sursă al obiectului Integer vom găsi o metodă 'valueOf' în care putem vedea că intervalul obiectului Integer se află de la IntegerCache.low(-128) la IntegerCache.high(127). Prin urmare, numerele de peste 127 nu vor da rezultatul așteptat. Intervalul IntegerCache poate fi observat din codul sursă al clasei IntegerCache.