Executando verificação de segurança...
-1

Essa é uma das coisas que não gosto no Java, a questão de o array não ter o tamanho dinâmico, diferentemente de outras linguagens fortemente tipadas que permitem.

Carregando publicação patrocinada...
4

Isso não faz sentido. Primeiro que as tais linguagens "fortemente" tipadas em sua maioria não permitem isso. Na verdade as exceções que existem são linguagens dinamicamente tipadas, e eu acho que queria dizer estaticamente e não fortemente.

O normal é o array ser estático, se ele se torna dinâmico ele deixa de ser um array, estritamente falando. Então a maioria chama de lista ou outra coisa, inclusive porque pode depender da implementação. Até tem linguagens que chama de array dinâmico, mas já não é o array tradicional. Para dar o dinamismo é necessário um uma estrutura de dados diferente ou um algoritmo mais complexo para manipular um array interno, e precisa documentar que a complexidade do algoritmo é diferente de um array.

O nome ArrayList de Java é criticado por várias pessoas porque pode gerar uma confusão. Não é uma crítica importante, mas não deixa de ter razão.

Duas das linguagens mais populares chamam de apenas array algo que é dinâmico (existem outras que chamam tambpem, mas não vou listar aqui até porque sempre faltará alguma quando sai das principais). PHP e JS, duas das linguagens mais criticadas, justamente por coisas deste tipo, usam outra estrutura de dados mas chama de array. Na documentação de PHP já deixa claro imediatamente que é um mapa (dá para discutor se é o melhor nome) e não um array. Não era assim antes, porque o criador, e mesmo quem veio depois, são péssimos criadores de linguagem, apesar de serem programadores acima da média (que é muito baixa). JS foi criada em 2 meses e tinha o intuito apenas fazer um macaquinho dançar, então nem precisava ser conceitualmente corrta, pena que as pessoas começaram fazer aplicações com ela, mas é um array associativo ou algo semelhante, que não é um array. Não por acaso essas duas linguagens são fracamente tipadas, além de serem dinamicamente tipadas, que hoje todo mundo que entende de computação é um erro para linguagens de mais alto nível que se propõe a fazer aplicações.

Por fim, que importa se o array não é dinâmico, se você tem "array dinâmico" na biblioteca padrão da linguagem, e com outro nome porque ele não é um array puro? Tem críticas muito mais importantes que se faz ao array do Java, por exemplo ele ter problemas de variância.

Em outro mundo o array poderia ser conceituado diferente, mas no que vivemos ele foi definido assim. Preciamos estudar os conceitos corretos para tomar decisões corretas.

Leia mais:

S2


Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente (não vendo nada, é retribuição na minha aposentadoria) (links aqui no perfil também).

1

Eu comecei no mundo da programação com Java, então os conceitos a mim apresentados naquela epoca eram meio que "imutaveis", mas consegui um emprego na área! Então tive de aprender PHP e Javascript/Typescript e achei muito bizarro uma array list ser chamada apenas de array, um array associative que pra mim é claramente uma mapped list ser chamado apenas de array... e assim por diante. Foi bem dificil pra mim ter de aceitar que diferentes linguagens tratam objetos complexos como tipos primitivos na maria das vezes... mas chegou uma hora onde eu só desencanei. As coisas são como elas são, essas são as ferramentas que eu tenho a minha disposição, e tenho que extrair o melhor possivel delas, concorde eu em como elas são ou não.

-1

existe uma diferença entre

memory allocation at compileTime
e
memory allocation at executionTime

na primeira o s.o. pode oferecer bytes 'contiguos' para a aplicacao

3

na primeira o s.o. pode oferecer bytes 'contiguos' para a aplicacao

Nas duas ele pode. Tanto o Array quanto o ArrayList são partes sequenciais da memória.

A diferença é que o ArrayList trata toda a alocação de memória para você.

Em C/C++ seria exatamente o mesmo funcionamento da função realloc