Grūtības pakāpe : Vidēja līmeņa
Paredziet šādu Java programmu izvadi:
1. programma:
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(); } }
Izvade:
Geeksforgeeks
Geeksforgeeks
Paskaidrojums:
Mēs zinām, ka statiskie mainīgie tiek izsaukti, kad klase noslogojas, un statiskie mainīgie tiek izsaukti tikai vienu reizi. Tagad 13. rindas rezultāti objekta izveidei, kas inturn izsauc konstruktoru un 'Geeksforgeeks' tiek izdrukāts otro reizi. Ja 8. rindā statiskais mainīgais nebūtu izmantots, objekts būtu rekursīvi bezgalīgi izsaukts, radot StackOverFlow kļūdu.
pārvērst virkni interger
2. programma:
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); } }
Izvade:
Static Block 1
Static Block 2
Value of num = 100
Value of mystr = Constructor
Paskaidrojums:
Statiskais bloks tiek izpildīts, kad klase tiek ielādēta atmiņā. Klasei var būt vairāki statiski bloki, kas tiek izpildīti tādā pašā secībā, kādā tie ir ierakstīti programmā.
Piezīme : Statiskās metodes var piekļūt klases mainīgajiem, neizmantojot klases objektu. Tā kā konstruktors tiek izsaukts, kad tiek izveidots jauns gadījums, tad vispirms tiek izsaukti statiskie bloki un pēc tam tiek izsaukts konstruktors. Ja mēs būtu palaiduši to pašu programmu, neizmantojot objektu, konstruktors nebūtu izsaukts.
3. programma:
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)); } }
Izvade:
Lieldienu olas Android ierīcē
Compilation fails. Paskaidrojums:
Metode calc() klasē superClass ir galīga, un tāpēc to nevar ignorēt.
4. programma:
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); } }
Izvade:
false
true
Paskaidrojums:
Integer objekta avota kodā mēs atradīsim metodi 'valueOf', kurā mēs varam redzēt, ka Integer objekta diapazons ir no IntegerCache.low(-128) līdz IntegerCache.high(127). Tāpēc skaitļi virs 127 nedos gaidīto rezultātu. IntegerCache diapazonu var novērot no IntegerCache klases pirmkoda.