Výstup programu Java | Súprava 7

Úroveň obtiažnosti: Stredne pokročilý Predpovedať výstup nasledujúcich 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 : Odpoveď: A) 20 vysvetlenie: Tu je názov premennej inštancie triedy (num) rovnaký ako calc() calc() metóda toto používa sa kľúčové slovo. Takže vo vyhlásení this.num = num * 10 v a predstavuje lokálnu premennú metódy, ktorej hodnota je 2 a toto.č predstavuje premennú inštancie triedy, ktorej počiatočná hodnota je 100. Teraz in printNum() metóda, pretože nemá žiadnu lokálnu premennú, ktorej názov je rovnaký ako premenná inštancie triedy, takže ju môžeme priamo použiť v a toto.č možno použiť.   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) Výstup je pravdivý a MyStuff spĺňa zmluvu Object.equals(). B) Výstup je nepravdivý a MyStuff spĺňa zmluvu Object.equals(). C) Výstup je pravdivý a MyStuff NESpĺňa zmluvu Object.equals(). D) Výstup je nepravdivý a MyStuff NESPLŇUJE zmluvu Object.equals(). odpoveď: C) Výstup je pravdivý a MyStuff NESpĺňa zmluvu Object.equals(). vysvetlenie: Ako rovná sa (objekt objektu) metóda v triede Object porovnáva dva objekty na základe vzťahu ekvivalencie. Ale tu len potvrdzujeme, že objekt je nulový alebo nie, takže nespĺňa Object.equals() zmluvy. Ako m1 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 odpoveď: A) alfa beta b b vysvetlenie: Vyhlásenie nová beta().go() vykonáva v dvoch fázach. V prvej fáze Beta volá sa konštruktor triedy. Nie je prítomný žiadny člen inštancie Beta trieda. Takže teraz Beta vykoná sa konštruktor triedy. Ako Beta trieda sa rozširuje Alfa trieda tak zavolajte na Alfa konštruktor triedy ako prvý príkaz štandardne (uložené kompilátorom) je super() v Beta konštruktor triedy. Teraz ako jedna premenná inštancie ( typu ) je prítomný v Alfa triedy tak to dostane pamäť a hneď Alfa konštruktor triedy sa vykoná a potom sa zavolá návrat na Beta ďalší príkaz konštruktora triedy. Takže alfa beta je vytlačený. V druhej fáze ísť () typu a . Takže sa to zmení na b a vytlačené dvakrát. The super kľúčové slovo tu je to nanič.   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 je vyhodený za behu. odpoveď: C) 4 vysvetlenie: pripojiť (string reťazec) s1 . The podreťazec (int index) metóda vráti reťazec z daného indexu na koniec. Ale keďže neexistuje žiadna premenná typu String na uloženie vrátených reťazcov, bude zničená. Teraz indexOf(String s2) s2 . So 4 is printed as 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) Písanie... B) Kniha písania C) Zápis kódu D) Kompilácia zlyhá odpoveď: B) Písanie knihy vysvetlenie: Keďže statické metódy nemožno prepísať, nezáleží na tom, ktorý objekt triedy sa vytvorí. Ako a je a Autor odkazovaný typ tak vždy Autor nazýva sa metóda triedy. Ak odstránime písať () metóda od Autor trieda potom Spisovateľ metóda triedy sa nazýva ako Autor trieda sa rozširuje Spisovateľ trieda.