1
resposta

Não entendi a resposta da questão.

Eu sou extremamente novo em Java, meu primeiro contato com a linguagem está sendo essa trilha pro certificado, então eu não sei se é porque ainda não explicou lista, mas eu não entendi a resposta dessa questão. "B[] bs" é diferente de "B bs[]"? Se sim, por que que "String[] args" pode ser também "String args[]" sem afetar o código?

1 resposta

Olá, Vitor.

Tudo bem?

Em Java, a forma como você declara arrays pode parecer confusa no início, mas na verdade é bem simples. As declarações B[] bs e B bs[] são equivalentes e ambas criam um array de objetos do tipo B. A escolha entre uma forma ou outra é mais uma questão de estilo e preferência pessoal.

Por exemplo, as duas linhas abaixo são equivalentes:

B[] bs = new B[100];
B bs[] = new B[100];

O mesmo vale para String[] args e String args[]. Ambas são formas válidas de declarar um array de String.

Agora, sobre a questão do exercício, a linha B[] bs = new B[100]; cria um array que pode conter 100 objetos do tipo B. No entanto, nesse ponto, nenhum objeto do tipo B foi realmente criado. O que foi criado é apenas o array que pode armazenar esses objetos.

Para realmente criar objetos do tipo B e colocá-los no array, você precisaria fazer algo assim:

for (int i = 0; i < bs.length; i++) {
    bs[i] = new B();
}

Como o código fornecido no exercício não faz isso, a resposta correta é a opção B: "Compila e nenhum objeto do tipo B é criado."

Espero ter ajudado e bons estudos!