Saída do programa Java | Conjunto 7

Nível de dificuldade: Intermediário Preveja a saída dos seguintes 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  ();      }   }   
Opções: A) 20 B) 100 C) 1000 D) 2 Resposta: A) 20 Explicação: Aqui, o nome da variável de instância da classe (num) é o mesmo que calcular() nome da variável local do método (num). Então, para fazer referência à variável de instância de classe de calcular() método esse palavra-chave é usada. Então, em declaração isto.num = num * 10 num representa a variável local do método cujo valor é 2 e isto.num representa variável de instância de classe cujo valor inicial é 100. Agora em imprimirNum() método, pois não possui variável local cujo nome seja igual à variável de instância de classe, portanto, podemos usar diretamente num para fazer referência à variável de instância, embora isto.num pode ser usado.   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  ;      }   }   
Opções: A) A saída é verdadeira e MyStuff cumpre o contrato Object.equals(). B) A saída é falsa e MyStuff cumpre o contrato Object.equals(). C) A saída é verdadeira e MyStuff NÃO cumpre o contrato Object.equals(). D) A saída é falsa e MyStuff NÃO cumpre o contrato Object.equals(). Responder : C) A saída é verdadeira e MyStuff NÃO cumpre o contrato Object.equals(). Explicação: Como é igual (objeto obj) O método na classe Object compara dois objetos com base na relação de equivalência. Mas aqui estamos apenas confirmando se o objeto é nulo ou não, então não cumpre Object.equals() contrato. Como m1 não é nulo verdadeiro será impresso.   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  ();      }   }   
Opções: A) alfa beta b b B) alfa beta a b C) beta alfa b b D) beta alfa a b Responder : A) alfa beta b b Explicação: A declaração novo Beta().go() é executado em duas fases. Na primeira fase Beta construtor de classe é chamado. Não há nenhum membro da instância presente em Beta aula. Então agora Beta construtor de classe é executado. Como Beta extensão de classe Alfa aula então a ligação vai para Alfa construtor de classe como primeira instrução por padrão (colocado pelo compilador) é super() no Beta construtor de classe. Agora, como uma variável de instância ( tipo ) está presente em Alfa class para que ele ganhe memória e agora Alfa o construtor da classe é executado e então chama return para Beta próxima instrução do construtor de classe. Então alfa beta é impresso. Na segunda fase ir() método é chamado neste objeto. Como existe apenas uma variável ( tipo ) no objeto cujo valor é um . Então será alterado para b e impresso duas vezes. O super palavra-chave aqui não adianta.   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  );      }   }   
Opções: A) -1 B) 3 C) 4 D) UMA StringIndexOutOfBoundsException é lançado em tempo de execução. Responder : C) 4 Explicação: acrescentar(String str) métodoconcatena o str para s1 . O substring (índice interno) método retorna a String do índice fornecido até o final. Mas como não existe nenhuma variável String para armazenar a string retornada, ela será destruída. indexOf(String s2) método retorna o índice da primeira ocorrência de s2 . Portanto, 4 é impresso 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  ();      }   }   
Opções: A) Escrevendo... B) Escrevendo livro C) Escrevendo código D) A compilação falha Responder : B) Escrevendo livro Explicação: Como os métodos estáticos não podem ser substituídos, não importa qual objeto de classe é criado. Como um é um Autor tipo referenciado então sempre Autor método de classe é chamado. Se removermos escrever() método de Autor aula então Escritor método de classe é chamado como Autor extensão de classe Escritor aula.