Излаз Јава програма | Сет 7

Ниво тежине: Средњи Предвидите излаз следећих Јава програма. Програм 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  ();      }   }   
Опције: А) 20 Б) 100 В) 1000 Г) 2 Одговор: А) 20 Објашњење: Овде је име променљиве инстанце класе (број) исто као цалц() назив локалне променљиве (број). Дакле, за референцирање променљиве инстанце класе из цалц() методом ово кључна реч се користи. Тако у изјави ово.број = број * 10 у а представља локалну променљиву методе чија је вредност 2 и ово.бр представља променљиву инстанце класе чија је почетна вредност 100. Сада у принтНум() метод јер нема локалну променљиву чије је име исто као променљива инстанце класе тако да можемо директно да користимо у а на референтну променљиву инстанце иако ово.бр може се користити.   Програм 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  ;      }   }   
Опције: А) Излаз је истинит и МиСтуфф испуњава уговор Објецт.екуалс(). Б) Излаз је лажан и МиСтуфф испуњава уговор Објецт.екуалс(). Ц) Излаз је истинит и МиСтуфф НЕ испуњава уговор Објецт.екуалс(). Д) Излаз је лажан и МиСтуфф НЕ испуњава уговор Објецт.екуалс(). Одговор: Ц) Излаз је истинит и МиСтуфф НЕ испуњава уговор Објецт.екуалс(). Објашњење: Ас једнако (Објекат објекат) метода у класи Објецт упоређује два објекта на основу релације еквиваленције. Али ми овде само потврђујемо да је објекат нулл или није, тако да не испуњава Објецт.екуалс() уговор. Ас м1 није нулл труе ће бити одштампано.   Програм 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  ();      }   }   
Опције: А) алфа бета б б Б) алфа бета а б Ц) бета алфа б б Д) бета алфа а б Одговор: А) алфа бета б б Објашњење: Изјава нова Бета().го() изводи у две фазе. У првој фази Бета конструктор класе се зове. Не постоји ниједан члан инстанце присутан у Бета класе. Па сада Бета конструктор класе се извршава. Ас Бета класа проширује Алпха разред па позив иде у Алпха конструктор класе као прва изјава по подразумеваној вредности (ставља компајлер). супер() у Бета конструктор класе. Сада као променљива једне инстанце ( тип ) је присутан у Алпха класе па ће добити меморију и сада Алпха конструктор класе се извршава, а затим позива ретурн то Бета конструктор класе следећа изјава. Дакле алфа бета се штампа. У другој фази иди () метода се позива на овом објекту. Пошто постоји само једна променљива ( тип ) у објекту чија је вредност а . Дакле, биће промењено у б и штампана два пута. Тхе супер кључна реч овде нема користи.   Програм 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  );      }   }   
Опције: А) -1 Б) 3 В) 4 Г) А СтрингИндекОутОфБоундсЕкцептион се баца у време извођења. Одговор: Ц) 4 Објашњење: аппенд(Стринг стр) метходцонцатенате тхе стр то с1 . Тхе подстринг (инт индекс) метода враћа стринг из датог индекса до краја. Али пошто не постоји никаква стринг променљива за чување враћених стрингова, тако да ће она бити уништена. Сада индекОф(Стринг с2) метода враћа индекс првог појављивања с2 . Дакле, 4 се штампа као с1='ЈаваЛове'.   Програм 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  ();      }   }   
Опције: А) Писање... Б) Књига за писање Ц) Писање кода Д) Компилација није успела Одговор: Б) Књига за писање Објашњење: Пошто се статичке методе не могу заменити, није битно који објекат класе је креиран. Ас а је а Аутор референтни тип тако увек Аутор метода класе се позива. Ако уклонимо напиши() метод из Аутор час онда Вритер метода класе се назива као Аутор класа проширује Вритер класе.