logo

Ieșirea programului Java | Setul 7

Nivel de dificultate: Intermediar Preziceți rezultatul următoarelor programe Java. Programul 1: 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();  } } 
Opțiuni: A) 20 B) 100 C) 1000 D) 2 Răspuns: A) 20 Explicatie: Aici variabila de instanță de clasă nume(num) este aceeași ca calc() metoda nume variabilă locală (num). Deci, pentru referirea la variabila de instanță a clasei de la calc() metodă acest este folosit cuvântul cheie. Deci în declarație aceasta.num = num * 10 într-o reprezintă variabila locală a metodei a cărei valoare este 2 și aceasta.num reprezintă variabila de instanță de clasă a cărei valoare inițială este 100. Acum în printNum() metoda deoarece nu are nicio variabilă locală al cărei nume este același cu variabila de instanță de clasă, astfel încât să putem folosi direct într-o pentru a face referire la variabila de instanță deși aceasta.num poate fi folosit.   Programul 2: 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;  } } 
Opțiuni: A) Rezultatul este adevărat și MyStuff îndeplinește contractul Object.equals(). B) Ieșirea este falsă și MyStuff îndeplinește contractul Object.equals(). C) Rezultatul este adevărat și MyStuff NU îndeplinește contractul Object.equals(). D) Ieșirea este falsă și MyStuff NU îndeplinește contractul Object.equals(). Raspuns: C) Rezultatul este adevărat și MyStuff NU îndeplinește contractul Object.equals(). Explicatie: Ca este egal(obiect obiect) Metoda din clasa Object compară două obiecte pe baza relației de echivalență. Dar aici doar confirmăm că obiectul este nul sau nu, deci nu se îndeplinește Object.equals() contracta. Ca m1 nu este nul adevărat va fi tipărit.   Programul 3: 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();  } } 
Opțiuni: A) alfa beta b b B) alfa beta a b C) beta alfa b b D) beta alfa a b Raspuns: A) alfa beta b b Explicatie: Declarația noua versiune beta().go() se execută în două faze. In prima faza Beta constructorul clasei este numit. Nu este prezent niciun membru al instanței Beta clasă. Deci acum Beta constructorul clasei este executat. Ca Beta clasa se extinde Alfa clasa, așa că apelul merge la Alfa constructorul de clasă ca primă instrucțiune în mod implicit (pus de compilator) este super() în Beta constructor de clasă. Acum ca o variabilă de instanță ( tip ) este prezent în Alfa clasa asa ca va capata memorie si acum Alfa constructorul clasei este executat apoi apelează return to Beta instrucțiunea următoare constructor de clasă. Aşa alfa beta este tipărită. In faza a doua merge() metoda este apelată pe acest obiect. Deoarece există o singură variabilă ( tip ) în obiectul a cărui valoare este o . Deci va fi schimbat în b și tipărit de două ori. The super cuvânt cheie aici nu este de nici un folos.   Programul 4: 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);  } } 
Opțiuni: A) -1 B) 3 C) 4 D) A StringIndexOutOfBoundsException este aruncat în timpul rulării. Raspuns: C) 4 Explicatie: append(String str) metodaconcatena str. la s1 . The subșir (index int) metoda returnează șirul de la indexul dat până la sfârșit. Dar, deoarece nu există nicio variabilă String pentru a stoca șirul returnat, acesta va fi distrus. Acum indexOf(Șir s2) metoda returnează indexul primei apariții a s2 . Deci 4 este tipărit ca s1='JavaLove'.   Programul 5: 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();  } } 
Opțiuni: A) Scrierea... B) Cartea de scris C) Codul de scriere D) Compilarea eșuează Raspuns: B) Cartea de scris Explicatie: Deoarece metodele statice nu pot fi suprascrise, nu contează ce obiect de clasă este creat. Ca o este o Autor tipul de referință deci întotdeauna Autor se numește metoda clasei. Dacă scoatem scrie() metoda din Autor clasa atunci Scriitor metoda clasei se numește ca Autor clasa se extinde Scriitor clasă.