Questão nº 32
Questão de Tecnologia da Informação · FCC PGE-AM 2022 (nº 32)
Considere a classe abaixo.
public class Exemplo1 {
public static void main(String[] args) {
int[] vet = {78, 89, 90, 34, 32, 56};
int[] dados = verificar(vet);
}
I
{
int a, b, x, t, max;
max = vet.length;
for (a = 0; a <= max - 1; a++) {
for (b = 0; b <= max - a; b++) {
if (b < max - 1) {
if (vet[b] > vet[b + 1]) {
x = vet[b];
vet[b] = vet[b + 1];
vet[b + 1] = x;
}
}
}
}
return vet;
}
}
A assinatura correta do método que deve ser colocada na lacuna I é
- A`public int[] verificar(int vet[])`
- B`private int[] verificar(int vet[])`
- C`public static int verificar(int vet[])`
- D`public int verificar(int vet)`
- E`public static int[] verificar(int vet[])` (alternativa correta)
Resposta comentada
Gabarito Alternativa E
Em Java, um método static pertence à classe e pode ser chamado diretamente sem criar um objeto dela, enquanto um método não static (ou de instância) precisa de um objeto para ser invocado. O método `main` é sempre `static`, então para ele chamar outro método da mesma classe diretamente, esse outro método também precisa ser `static`.
(A) Incorreta: O método `verificar` não é `static`, o que impede que seja chamado diretamente do método `main` (que é `static`) sem a criação de um objeto da classe `Exemplo1`.
(B) Incorreta: Similar à alternativa A, o método não é `static`, impedindo sua chamada direta de `main`. Além disso, o modificador `private` restringiria o acesso, mas o problema principal é a ausência de `static`.
(C) Incorreta: O tipo de retorno está incorreto; o método retorna um array de inteiros (`int[]`), não um único inteiro (`int`), conforme indicado pelo `return vet;` e a variável `dados` que recebe o retorno.
(D) Incorreta: Tanto o tipo de retorno quanto o tipo do parâmetro estão incorretos (deveriam ser arrays de inteiros, `int[]`, e não um único inteiro, `int`). Também falta o modificador `static`.
(E) Correta: A assinatura `public static int[] verificar(int vet[])` está correta porque: `public` permite acesso geral; `static` é necessário para que o método seja chamado diretamente de `main` (que é `static`) sem criar um objeto; `int[]` é o tipo de retorno correto, pois o método retorna um array de inteiros; e `(int vet[])` é o tipo de parâmetro correto, recebendo um array de inteiros.
Fonte: FCC PGE-AM 2022 Técnico em Gestão Procuratorial - Especialidade Engenharia de Software (Caderno Tipo 001). Reproduzida para fins de estudo.