Sortida del programa Java | Set 7

Nivell de dificultat: Intermedi Prediu la sortida dels següents programes Java. Programa 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  ();      }   }   
Opcions: A) 20 B) 100 C) 1000 D) 2 Resposta: A) 20 Explicació: Aquí la variable d'instància de classe name(num) és la mateixa que calc() mètode nom variable local (núm). Així, per fer referència a la variable d'instància de classe de calc() mètode això s'utilitza la paraula clau. Així que en declaració això.núm = núm * 10 en a representa la variable local del mètode el valor del qual és 2 i aquest.núm representa la variable d'instància de classe el valor inicial de la qual és 100. Ara entra printNum() mètode ja que no té cap variable local el nom de la qual sigui el mateix que la variable d'instància de classe, de manera que podem utilitzar directament en a per fer referència a la variable d'instància encara que aquest.núm es pot utilitzar.   Programa 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  ;      }   }   
Opcions: A) La sortida és certa i MyStuff compleix el contracte Object.equals(). B) La sortida és falsa i MyStuff compleix el contracte Object.equals(). C) La sortida és certa i MyStuff NO compleix el contracte Object.equals(). D) La sortida és falsa i MyStuff NO compleix el contracte Object.equals(). Resposta: C) La sortida és certa i MyStuff NO compleix el contracte Object.equals(). Explicació: Com iguals (objecte objecte) El mètode a la classe Object compara dos objectes sobre la base de la relació d'equivalència. Però aquí només estem confirmant que l'objecte és nul o no Per tant, no es compleix Object.equals() contracte. Com m1 no és nul true s'imprimirà.   Programa 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  ();      }   }   
Opcions: A) alfa beta b b B) alfa beta a b C) beta alfa b b D) beta alfa a b Resposta: A) alfa beta b b Explicació: La declaració nova beta().go() s'executa en dues fases. En primera fase Beta s'anomena constructor de classes. No hi ha cap membre de la instància present Beta classe. Així que ara Beta s'executa el constructor de classes. Com Beta la classe s'estén Alfa classe, així que la trucada va a Alfa constructor de classes com a primera instrucció per defecte (posat pel compilador). super() en el Beta constructor de classes. Ara com una variable d'instància ( tipus ) està present a Alfa classe perquè obtindrà memòria i ara Alfa s'executa el constructor de classes i després crida a return to Beta instrucció següent del constructor de classes. Així que alfa beta està imprès. En segona fase anar () s'anomena mètode en aquest objecte. Com que només hi ha una variable ( tipus ) a l'objecte el valor del qual és a . Així que es canviarà per b i imprès dues vegades. El súper paraula clau aquí no serveix de res.   Programa 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  );      }   }   
Opcions: A) -1 B) 3 C) 4 D) A StringIndexOutOfBoundsException es llança en temps d'execució. Resposta: C) 4 Explicació: append(String str) mètodeconcatenar el str a s1 . El subcadena (índex int) El mètode retorna la cadena des de l'índex donat fins al final. Però com que no hi ha cap variable String per emmagatzemar la cadena retornada, serà destruïda. Ara indexOf(String s2) mètode retorna l'índex de la primera aparició de s2 . Per tant, 4 s'imprimeix com s1='JavaLove'.   Programa 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  ();      }   }   
Opcions: A) Escriptura... B) Llibre d'escriptura C) Codi d'escriptura D) La compilació falla Resposta: B) Llibre d'escriptura Explicació: Com que els mètodes estàtics no es poden anul·lar, no importa quin objecte de classe es creï. Com a és a Autor tipus de referència, així que sempre Autor s'anomena mètode de classe. Si eliminem escriure () mètode de Autor classe doncs Escriptor mètode de classe s'anomena com Autor la classe s'estén Escriptor classe.