1. Matrizes na memória
Nos exemplos anteriores, as ilustrações eram um pouco imprecisas.
Ao criar arrays (como ao criar strings), dois blocos separados de memória são alocados: um para armazenar o próprio array (container) e um segundo bloco para a variável que armazena seu endereço . A figura abaixo representa esse esclarecimento:

A memória alocada para o array de 10 intelementos e a int[]variável que armazena o endereço do intarray é mostrada em verde.
intPara comparação, uma variável comum que armazena o valor 199é mostrada em azul.
Isso lembra um pouco o armazenamento de strings na memória, não acha?
Isso mesmo, cordas. E assim como quando você trabalha com strings, você pode atribuir variáveis de array umas às outras:
| Código | Explicação |
|---|---|
|
Crie uma matriz de 10 intelementos. Atribua o valor 4à célula com index 2. Atribua o valor 9à célula com index 7. Na bvariável, salve o endereço armazenado na avariável. Agora ae baponte para o mesmo objeto de matriz na memória. Na célula do objeto array com índice 9, escreva a soma dos valores que estão armazenados nas células 2(que armazena o valor 4) e 7(que armazena o valor 9). |
O objeto array fica exatamente onde estava, e as avariáveis be armazenam o mesmo endereço (referência) para o mesmo objeto. Olha a foto:
2. Mais detalhes sobre como trabalhar com arrays
Você pode criar uma matriz de elementos de absolutamente qualquer tipo. Para fazer isso, basta escrever colchetes após o nome do tipo. Em geral, a criação de um array se parece com isso:
type[] name = new type[number];
Onde type é o tipo dos elementos que iremos armazenar no array. Name é o nome da variável que usaremos para nos referir ao array, e number é o número de células no array.
O exemplo acima é a forma canônica para criar uma variável de array e um objeto de array. Na realidade, essas são duas entidades separadas.
Você pode criar uma variável de array separadamente de um objeto de array:
type[] name;
name = new type[number];
E mais um ponto que não é insignificante:
Exemplos:
| Código | Explicação |
|---|---|
|
Criar uma matriz de nelementos |
|
Criar uma matriz com 203elementos |
|
|
0..99um
ArrayIndexOfBoundException, o que significa que o índice estava fora dos limites da matriz.
3. Comprimento da matriz
Como você viu no exemplo anterior, você pode criar uma variável de array sozinha e depois atribuir um valor (uma referência a um objeto de array) a ela em algum lugar do código. Você pode até fazer isso:
| Código | Explicação |
|---|---|
|
Crie uma variável de matriz cujo tipo seja int[]Se a avariável for menor que 10, crie uma matriz de 10elementos. Caso contrário, crie uma matriz de 20elementos |
E agora o que mais você pode fazer com essa matriz? Como você sabe quantos elementos estão nele?
Para ajudar com isso, os arrays possuem uma propriedade especial (variável) chamada length. Você pode encontrar o comprimento de uma matriz usando esta expressão:
array.length;
Aqui arrayestá o nome da variável do array e lengthé o nome da propriedade do array. O valor da lengthpropriedade não pode ser alterado: a lengthprópria propriedade pode ser atribuída a outras variáveis, mas nada pode ser atribuído a ela (se você tentar fazer isso, o programa simplesmente não será compilado).
Podemos continuar com o exemplo anterior assim:
| Código | Explicação |
|---|---|
|
Crie uma variável de matriz cujo tipo seja int[]Se a avariável for menor que 10, crie uma matriz de 10elementos. Caso contrário, crie uma matriz de 20elementos Faça um loop sobre todos os elementos da matriz: de 0ao comprimentoarray.length - 1 |
4. Resumo dos fatos sobre arrays em Java
Vamos recapitular o que sabemos sobre arrays:
Fato 1. Uma matriz consiste em muitas células.
Fato 2. Você acessa uma célula específica usando seu número (índice).
Fato 3. Todas as células são do mesmo tipo.
Fato 4. O valor inicial de todas as células é 0 (se as células armazenam números), null(se as células armazenam referências de objetos) ou false(se as células armazenam booleanvalores). Você aprenderá mais sobre os valores padrão neste capítulo .
Fato 5. String[] list é apenas a declaração de uma variável. Isso não cria o contêiner (objeto de matriz) em si. Para usar a variável, você precisa primeiro criar um array (container) e atribuí-lo à variável. Veja o exemplo abaixo.
Fato 6. Quando criamos um objeto array (container), devemos indicar o tamanho dele, ou seja, quantas células ele contém. Isso é feito com uma instrução como: new TypeName[n];
Fato 7. O comprimento de um array pode ser encontrado usando a .lengthpropriedade.
Fato 8. Depois de criar um array, você não pode alterar o tipo de seus elementos ou o número de elementos que ele armazena.
| Código | Explicação |
|---|---|
|
sé nulllisténull |
|
A listvariável armazena uma referência a um objeto: uma matriz de strings composta por 10elementos. né10 |
|
Agora |
|
Uma exceção (erro de programa) será lançada, ou seja, o programa travará. listarmazena uma referência anull |
|
Uma exceção de matriz fora dos limites (erro de programa) será gerada. Se a listarmazena 10elementos/células, então os índices válidos são: 0 1 2 3 4 5 6 7 8 9— 10elementos. |
GO TO FULL VERSION