logo

Izhod programa Java | Komplet 7

Stopnja težavnosti: Vmesni Predvidi izhod naslednjih programov Java. Program 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();  } } 
Možnosti: A) 20 B) 100 C) 1000 D) 2 Odgovor: A) 20 Pojasnilo: Tukaj je spremenljivka primerka razreda name(num) enaka kot izračun() ime lokalne spremenljivke metode (št.). Torej za sklicevanje na spremenljivko primerka razreda iz izračun() metoda to uporabljena ključna beseda. Torej v izjavi this.num = num * 10 v a predstavlja lokalno spremenljivko metode, katere vrednost je 2 in to.št predstavlja spremenljivko primerka razreda, katere začetna vrednost je 100. Zdaj v printNum() metoda, saj nima lokalne spremenljivke, katere ime je enako kot spremenljivka primerka razreda, tako da jo lahko neposredno uporabimo v a čeprav se sklicuje na spremenljivko primerka to.št se lahko uporablja.   Program 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;  } } 
Možnosti: A) Izhod je resničen in MyStuff izpolnjuje pogodbo Object.equals(). B) Izhod je napačen in MyStuff izpolnjuje pogodbo Object.equals(). C) Izhod je resničen in MyStuff NE izpolnjuje pogodbe Object.equals(). D) Izhod je napačen in MyStuff NE izpolnjuje pogodbe Object.equals(). odgovor: C) Izhod je resničen in MyStuff NE izpolnjuje pogodbe Object.equals(). Pojasnilo: Kot enako (predmet obj) metoda v razredu Object primerja dva predmeta na podlagi ekvivalenčne relacije. Toda tukaj samo potrjujemo, da je objekt nič ali ne, torej ne izpolnjuje Object.equals() pogodba. Kot m1 is not null true bo natisnjen.   Program 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();  } } 
Možnosti: A) alfa beta b b B) alfa beta a b C) beta alfa b b D) beta alfa a b odgovor: A) alfa beta b b Pojasnilo: Izjava nova Beta().go() izvaja v dveh fazah. V prvi fazi Beta se imenuje konstruktor razreda. Ni prisotnega člana primerka Beta razred. Torej zdaj Beta konstruktor razreda se izvede. Kot Beta razred se razširi Alfa razreda, zato gre klic Alfa konstruktor razreda kot prvi stavek privzeto (postavi ga prevajalnik). super() v Beta konstruktor razreda. Zdaj kot ena spremenljivka primerka ( vrsta ) je prisoten v Alfa razreda, tako da bo dobil spomin in zdaj Alfa konstruktor razreda se izvede, nato pa pokliče vrnitev v Beta konstruktor razreda naslednji stavek. torej alfa beta je natisnjen. V drugi fazi pojdi() metoda je klicana na tem objektu. Ker obstaja samo ena spremenljivka ( vrsta ) v objektu, katerega vrednost je a . Tako bo spremenjeno v b in natisnjen dvakrat. The super ključna beseda tukaj ni za nobeno rabo.   Program 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);  } } 
Možnosti: A) -1 B) 3 C) 4 D) A StringIndexOutOfBoundsException vrže med izvajanjem. odgovor: C) 4 Pojasnilo: pripni (niz str) metoda združi str v s1 . The podniz (int indeks) metoda vrne niz od podanega indeksa do konca. Toda ker ni nobene spremenljivke String za shranjevanje vrnjenih nizov, bo uničen. Zdaj indexOf(niz s2) metoda vrne indeks prve pojavitve s2 . Torej je 4 natisnjen kot s1='JavaLove'.   Program 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();  } } 
Možnosti: A) Pisanje ... B) Knjiga za pisanje C) Pisanje kode D) Prevajanje ne uspe odgovor: B) Knjiga za pisanje Pojasnilo: Ker statičnih metod ni mogoče preglasiti, ni pomembno, kateri predmet razreda je ustvarjen. Kot a je a Avtor naveden tip tako vedno Avtor se imenuje metoda razreda. Če odstranimo pisati() metoda iz Avtor razred torej Pisatelj metoda razreda se imenuje as Avtor razred se razširi Pisatelj razred.