Como as matrizes estáticas são armazenadas na memória Jav

Então, em um idioma como C, a memória é separada em 5 partes diferentes: Kernel do SO, segmento de texto, memória estática, memória dinâmica e a pilha. Algo assim

Se declaramos uma matriz estática em C, você tinha que especificar seu tamanho antecipadamente, depois isso seria corrigido para sempre. O programa alocaria memória suficiente para a matriz e a colocaria no segmento de dados estáticos conforme o esperad

No entanto, notei que, em Java, você poderia fazer algo assim:

public class Test {
        static int[] a = new int[1];

        public static void main( String[] args ) {
                a = new int[2];
        }
} 

e tudo funcionaria como você esperaria. Minha pergunta é: por que isso funciona em Java?

EDIT: Então, o consenso é que umint[] em Java atua de maneira mais semelhante a umint* in C. Então, como uma pergunta de acompanhamento, existe alguma maneira de alocar matrizes na memória estática em Java (se não, por que não)? Isso não forneceria acesso mais rápido a essas matrizes? EDIT2: ^ isso está em uma nova pergunta agora:nde estão as variáveis de classe estática armazenadas na memóri

questionAnswers(7)

yourAnswerToTheQuestion