🎯 Saiba o que estudar

Avançado com Treinador a partir de R$ 0,76/dia

No contexto da linguagem Java, considere um array definido ...

Próximas questões
Com base no mesmo assunto
Q1846130 Programação

No contexto da linguagem Java, considere um array definido como segue.


String[] nomes = new String[100];


Assinale a expressão cujo valor corresponde ao índice do último elemento do array nomes.

Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: B - nomes.length - 1.

Para compreender a questão e chegar à alternativa correta, é essencial conhecer como arrays (ou vetores) são estruturados e manipulados na linguagem de programação Java. Um array é uma coleção sequencial de elementos do mesmo tipo. Em Java, os índices dos elementos de um array começam em 0 e vão até o comprimento do array menos um. Isso significa que o primeiro elemento está no índice 0 e o último elemento está no índice que é o comprimento total do array subtraído por 1.

Quando declaramos o array String[] nomes = new String[100];, estamos dizendo que nomes é um array que pode conter até 100 elementos, indexados de 0 a 99. A propriedade length de um array em Java armazena a quantidade total de elementos que o array pode conter, que neste caso é 100. Portanto, o índice do último elemento do array é o valor de length subtraído por 1.

A alternativa correta (B) nomes.length - 1 representa exatamente isso: o valor de length (100) menos 1, resultando em 99, que é o índice do último elemento do array.

As outras alternativas estão incorretas: (A) representaria a quantidade total de elementos e não o índice do último elemento; (C) e (D) são incorretas porque arrays em Java não têm um método size, que é usado em coleções como ArrayList; e (E) simplesmente não é uma propriedade válida para arrays em Java.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

No java os arrays começam com 0. No caso em tela, a propriedade length retorna o valor 100, mas isso causaria um estouro, pois não temos essa posição. Daí ser necessário subtrair o valor -1.

Aqui achei uma referência legal e atualizada sobre esse assunto: https://www.delftstack.com/pt/howto/java/size-vs-length-in-java/#java-collections-size-m%25C3%25A9todo

Mas resumindo, eis uma diferença importante:

Array em Java tem tamanho fixo, e a propriedade/atributo length é usada para mostrar esse tamanho fixo (ou seja, a capacidade máxima) desse array. Ele não mostra a quantidade de elementos preenchidos, e sim o número de elementos que podem ser armazenados.

Já o método size() é um método da classe java.util.Collections, e por isso apenas pode ser usado por coleções como ArrayList, HashSet, HashMap, etc. Como essas coleções são alocadas dinamicamente, o size() retorna o número de elementos atualmente presentes na coleção.

✅Gabarito(B) 

length

Os arrays armazenam um número fixo de dados do mesmo tipo de maneira ordenada. Todas as matrizes em Java têm um campo de comprimento que armazena o espaço alocado para os elementos dessa matriz. É um valor constante usado para descobrir a capacidade máxima do array, independente do número de elementos armazenados.

size()

size() é um método da classe java.util.Collections. A classe Collections é usada por muitas coleções diferentes (ou estruturas de dados) como ArrayList, LinkedList,HashSet e HashMap. O método size() retorna o número de elementos atualmente presentes na coleção. Ao contrário da propriedade length dos arrays, o valor retornado pelo método size() não é constante e muda de acordo com o número de elementos.

Todas as coleções do Collection Framework em Java são alocadas dinamicamente, portanto o número de elementos pode variar. O método size() é usado para controlar o número de elementos.

Fonte:https://www.delftstack.com/pt/howto/java/size-vs-length-in-java/

Em Java, os índices dos arrays começam em 0. Portanto, o índice do último elemento de um array de tamanho n é n - 1.

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo