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.