Questão nº 34

Questão de Tecnologia da Informação · CESGRANRIO BASA 01/2018 (nº 34)

CESGRANRIO2018Técnico Científico - Área de Formação: Tecnologia da InformaçãoTecnologia da Informação
Gabarito: Bver comentário ↓

Considere o código Java listado a seguir, onde a numeração de linhas está sendo utilizada apenas como referência:

```java
i. package teste;
ii. public class Classe {
iii. private static int a = 5;
iv. public static void main(String[] args) {
v. int a = 8;
vi.
vii. }
viii. }
```

Que comando deve ser inserido na linha vi para exibir o valor 5 na console?

Resposta comentada

Gabarito Alternativa B

Conceito-chave: Em Java, uma variável static pertence à classe, não a um objeto. Para acessá-la de fora da classe (ou quando há uma variável local com o mesmo nome), você deve usar o nome da classe antes do ponto: Classe.a.

  • (A) Incorreta: a aqui se refere à variável local int a = 8; (linha v), que tem escopo restrito ao método main. Imprimiria 8, não 5.
  • (B) Correta: Classe.a acessa diretamente o atributo estático private static int a = 5; da classe Classe. Como é static, o acesso é feito pelo nome da classe, independente de instância, e imprime 5.
  • (C) Incorreta: Integer.parseInt(a) tenta converter uma String em int, mas a é um int, não uma String. Isso gera erro de compilação (tipos incompatíveis).
  • (D) Incorreta: super.a refere-se ao atributo da superclasse (classe pai). Como Classe não estende nenhuma classe explicitamente (só Object, que não tem a), isso gera erro de compilação.
  • (E) Incorreta: this.a refere-se ao atributo de instância da classe atual. Como a é static (não pertence a um objeto), this não pode ser usado para acessá-lo em um contexto estático (método main). Gera erro de compilação.

Armadilha do distrator (A): A banca coloca uma variável local com o mesmo nome (int a = 8;) para tentar fazer você esquecer que a variável estática existe. A pegadinha é que, sem o prefixo Classe., o Java sempre prioriza a variável de escopo mais próximo (a local), então System.out.println(a) imprime 8, não 5. Para acessar a estática, você precisa desambiguar usando o nome da classe.

Fonte: CESGRANRIO BASA 01/2018 Técnico Científico - Área de Formação: Tecnologia da Informação. Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho