Salida del programa Java | Conjunto 7

Nivel de dificultad: Intermedio Predecir el resultado de los siguientes programas 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  ();      }   }   
Opciones: A) 20 B) 100 C) 1000 D) 2 Respuesta: A) 20 Explicación : Aquí el nombre de la variable de instancia de clase (num) es el mismo que calcular() nombre de la variable local del método (núm). Entonces, para hacer referencia a la variable de instancia de clase desde calcular() método este Se utiliza palabra clave. Entonces en declaración este.núm = núm * 10 en un representa la variable local del método cuyo valor es 2 y este.num representa una variable de instancia de clase cuyo valor inicial es 100. Ahora en imprimirNum() método ya que no tiene una variable local cuyo nombre sea el mismo que la variable de instancia de clase, por lo que podemos usar directamente en un para hacer referencia a la variable de instancia aunque este.num se puede utilizar.   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  ;      }   }   
Opciones: A) El resultado es verdadero y MyStuff cumple el contrato Object.equals(). B) El resultado es falso y MyStuff cumple el contrato Object.equals(). C) El resultado es verdadero y MyStuff NO cumple con el contrato Object.equals(). D) El resultado es falso y MyStuff NO cumple con el contrato Object.equals(). Respuesta : C) El resultado es verdadero y MyStuff NO cumple con el contrato Object.equals(). Explicación : Como es igual(Objeto obj) El método de la clase Objeto compara dos objetos sobre la base de una relación de equivalencia. Pero aquí solo estamos confirmando que el objeto es nulo o no Entonces no cumple Objeto.igual() contrato. Como m1 no es nulo verdadero se 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  ();      }   }   
Opciones: A) alfa beta b b B) alfa beta a b C) beta alfa b b D) beta alfa a b Respuesta : A) alfa beta b b Explicación : la declaración nueva Beta().ir() se ejecuta en dos fases. en primera fase Beta Se llama al constructor de clases. No hay ningún miembro de instancia presente en Beta clase. Así que ahora Beta Se ejecuta el constructor de la clase. Como Beta la clase se extiende Alfa clase así que la llamada va a Alfa constructor de clase como primera declaración por defecto (puesto por el compilador) es súper() en el Beta constructor de clases. Ahora como una variable de instancia ( tipo ) está presente en Alfa clase para que obtenga memoria y ahora Alfa Se ejecuta el constructor de la clase y luego se llama a regresar a Beta siguiente declaración del constructor de clase. Entonces alfa beta está impreso. En segunda fase ir() Se llama al método en este objeto. Como solo hay una variable ( tipo ) en el objeto cuyo valor es a . Entonces se cambiará a b e impreso dos veces. El súper palabra clave aquí no sirve de nada.   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  );      }   }   
Opciones: A) -1 B) 3 C) 4 D) A Excepción StringIndexOutOfBounds se lanza en tiempo de ejecución. Respuesta : c) 4 Explicación : agregar (cadena de cadena) métodoconcatenar la cadena a s1 . El subcadena (índice int) El método devuelve la cadena desde el índice dado hasta el final. Pero como no hay ninguna variable de cadena para almacenar la cadena devuelta, será destruida. Ahora índice de (cadena s2) El método devuelve el índice de la primera aparición de s2 . Entonces 4 se imprime como 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  ();      }   }   
Opciones: A) Escribir... B) Escribir un libro C) Escribir código D) La compilación falla Respuesta : B) Libro de escritura Explicación : Dado que los métodos estáticos no se pueden anular, no importa qué objeto de clase se cree. Como a es un Autor tipo referenciado así que siempre Autor Se llama al método de clase. si eliminamos escribir() método de Autor clase entonces Escritor El método de clase se llama como Autor la clase se extiende Escritor clase.