No contexto da linguagem Java, considere um array definido ...
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.
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