Grūtības pakāpe: Vidējs Prognozē šādu Java programmu izvadi. 1. programma: Java public class Calculator { int num = 100; public void calc(int num) { this.num = num * 10; } public void printNum() { System.out.println(num); } public static void main(String[] args) { Calculator obj = new Calculator(); obj.calc(2); obj.printNum(); } } Iespējas: A) 20 B) 100 C) 1000 D) 2 Atbilde: A) 20 Paskaidrojums: Šeit klases instances mainīgā nosaukums(num) ir tāds pats kā calc() metode lokālā mainīgā nosaukums(num). Tātad, lai atsauktos uz klases instances mainīgo no calc() metodi šis tiek izmantots atslēgvārds. Tātad paziņojumā this.num = num * 10 a apzīmē metodes lokālo mainīgo, kura vērtība ir 2 un šis.nr apzīmē klases instances mainīgo, kura sākotnējā vērtība ir 100. Tagad iekšā printNum() metodi, jo tai nav lokālā mainīgā, kura nosaukums ir tāds pats kā klases instances mainīgajam, lai mēs varētu tieši izmantot a lai atsauktos uz instances mainīgo, lai gan šis.nr var izmantot. 2. programma: Java public class MyStuff { String name; MyStuff(String n) { name = n; } public static void main(String[] args) { MyStuff m1 = new MyStuff('guitar'); MyStuff m2 = new MyStuff('tv'); System.out.println(m2.equals(m1)); } @Override public boolean equals(Object obj) { MyStuff m = (MyStuff) obj; if (m.name != null) { return true; } return false; } } Iespējas: A) Izvade ir patiesa, un MyStuff izpilda Object.equals() līgumu. B) Izvade ir nepatiesa, un MyStuff izpilda Object.equals() līgumu. C) Izvade ir patiesa, un MyStuff NEizpilda Object.equals() līgumu. D) Izvade ir nepatiesa, un MyStuff NEpilda Object.equals() līgumu. Atbilde: C) Izvade ir patiesa, un MyStuff NEizpilda Object.equals() līgumu. Paskaidrojums: Kā vienāds (Objekts objekts) Metode Object klasē salīdzina divus objektus, pamatojoties uz ekvivalences attiecību. Bet šeit mēs tikai apstiprinām, ka objekts ir nulle vai nav Tātad tas neatbilst Object.equals() līgums. Kā m1 nav null true tiks izdrukāts. 3. programma: Java class Alpha { public String type = 'a '; public Alpha() { System.out.print('alpha '); } } public class Beta extends Alpha { public Beta() { System.out.print('beta '); } void go() { type = 'b '; System.out.print(this.type + super.type); } public static void main(String[] args) { new Beta().go(); } } Iespējas: A) alfa beta b b B) alfa beta a b C) beta alfa b b D) beta alfa a b Atbilde: A) alfa beta b b Paskaidrojums: Paziņojums jauna Beta().go() izpilda divās fāzēs. Pirmajā fāzē Beta klases konstruktors tiek izsaukts. Vietnē nav neviena instances dalībnieka Beta klasē. Tātad tagad Beta klases konstruktors tiek izpildīts. Kā Beta klase pagarinās Alfa klase tāpēc zvans uz Alfa klases konstruktors kā pirmais paziņojums pēc noklusējuma (ieliek kompilators). super() sadaļā Beta klases konstruktors. Tagad kā viena gadījuma mainīgais ( veids ) atrodas iekšā Alfa klase, lai tas iegūs atmiņu un tagad Alfa klases konstruktors tiek izpildīts, pēc tam izsauciet atgriešanos Beta klases konstruktors nākamais paziņojums. Tātad alfa beta ir izdrukāts. Otrajā fāzē aiziet () metode tiek izsaukta šim objektam. Tā kā ir tikai viens mainīgais ( veids ) objektā, kura vērtība ir a . Tātad tas tiks mainīts uz b un izdrukāts divas reizes. The super atslēgvārds šeit nav nekāda labuma. 4. programma: Java public class Test { public static void main(String[] args) { StringBuilder s1 = new StringBuilder('Java'); String s2 = 'Love'; s1.append(s2); s1.substring(4); int foundAt = s1.indexOf(s2); System.out.println(foundAt); } } Iespējas: A) -1 B) 3 C) 4 D) A StringIndexOutOfBoundsException tiek izmests izpildlaikā. Atbilde: C) 4 Paskaidrojums: pievienot (string string) metodesavienojiet str ar s1 . The apakšvirkne (indekss) metode atgriež virkni no dotā indeksa līdz beigām. Bet, tā kā nav neviena virknes mainīgā, lai saglabātu atgriezto virkni, tā tiks iznīcināta. Tagad indexOf(virkne s2) metode atgriež pirmās parādīšanās indeksu s2 . Tātad 4 tiek drukāts kā s1='JavaLove'. 5. programma: Java class Writer { public static void write() { System.out.println('Writing...'); } } class Author extends Writer { public static void write() { System.out.println('Writing book'); } } public class Programmer extends Author { public static void write() { System.out.println('Writing code'); } public static void main(String[] args) { Author a = new Programmer(); a.write(); } } Iespējas: A) Rakstīšana... B) Grāmatas rakstīšana C) Koda rakstīšana D) Kompilācija neizdodas Atbilde: B) Rakstīšanas grāmata Paskaidrojums: Tā kā statiskās metodes nevar ignorēt, nav nozīmes tam, kurš klases objekts ir izveidots. Kā a ir a Autors atsauces veids tik vienmēr Autors klases metodi sauc. Ja mēs noņemam rakstīt () metode no Autors klase tad Rakstnieks klases metodi sauc par Autors klase pagarinās Rakstnieks klasē.