Sunkumo lygis : Vidutinis
Numatykite šių „Java“ programų išvestį:
1 programa:
Javaclass 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:
Javaclass 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:
Javaclass 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:
Javapublic 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.