logo

Java programos išvestis | 9 rinkinys

Sunkumo lygis : Vidutinis

Numatykite šių „Java“ programų išvestį:

1 programa:

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

Išvestis:



Geeksforgeeks  
Geeksforgeeks

Paaiškinimas:

Žinome, kad statiniai kintamieji iškviečiami, kai klasė apkraunama, o statiniai – tik vieną kartą. Dabar 13 eilutės rezultatai yra sukurti objektą, kuris iškviečia konstruktorių, o „Geeksforgeeks“ spausdinamas antrą kartą. Jei 8 eilutėje nebūtų buvęs naudojamas statinis kintamasis, objektas būtų rekursyviai iškviestas be galo, o tai sukeltų StackOverFlow klaidą.

Java serverio puslapiai

2 programa:

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

Išvestis:

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

Paaiškinimas:

Statinis blokas vykdomas, kai klasė įkeliama į atmintį. Klasėje gali būti keli statiniai blokai, kurie vykdomi ta pačia seka, kuria jie buvo įrašyti į programą.

Pastaba : Statiniai metodai gali pasiekti klasės kintamuosius nenaudodami klasės objekto. Kadangi konstruktorius iškviečiamas, kai sukuriamas naujas egzempliorius, todėl pirmiausia iškviečiami statiniai blokai, o po to – konstruktorius. Jei būtume paleidę tą pačią programą nenaudodami objekto, konstruktorius nebūtų iškviestas.  

3 programa:

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

Išvestis:

Compilation fails. 

Paaiškinimas:

Metodas calc() klasėje superClass yra galutinis, todėl jo negalima nepaisyti.  

Fibonacci kodas java

4 programa:

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

Išvestis:

false  
true

Paaiškinimas:

Integer objekto šaltinio kode rasime metodą 'valueOf', kuriame matome, kad sveikojo skaičiaus objekto diapazonas yra nuo IntegerCache.low(-128) iki IntegerCache.high(127). Todėl skaičiai, viršijantys 127, neduos laukiamo rezultato. „IntegerCache“ diapazoną galima stebėti iš „IntegerCache“ klasės šaltinio kodo.