Matriz JAVA Foundation-Capítulo 5

Conteúdo de hoje

Conceito de
array Definição de
array Índice de
array Memória do
array Travessia do
array Aquisição do valor máximo do
array Inversão do
array Array como parâmetro de método e valor de retorno

objetivos de ensino

Compreender o conceito
de contêineres, dominar a primeira definição
de matrizes, dominar a segunda definição
de matrizes, dominar a terceira definição de matrizes,
usar índices para acessar elementos de matriz,
compreender o diagrama de memória de matrizes,
entender ponteiros nulos e exceções fora dos limites,
dominar a passagem
de matrizes Obtendo o valor máximo de um
array Entenda o princípio da inversão de array
Entenda como os arrays são passados ​​como parâmetros de método
Entenda arrays como valores de retorno de método

Capítulo Um Definição de Matriz e Acesso

1. 1 Visão geral do contêiner

análise de caso

Agora precisamos contar o salário dos funcionários de uma empresa, como calcular o salário médio, encontrar o salário mais alto, etc. Supondo que a empresa tenha 50 funcionários, usando o conhecimento aprendido antes, o programa primeiro precisa declarar 50 variáveis ​​para lembrar o salário de cada funcionário e, em seguida, realizar as operações. Isso será muito problemático e a taxa de erro será muito alta. Alto. Portanto, podemos usar contêineres para operações. Armazene todos os dados em um contêiner e opere de maneira uniforme.

Conceito de container

Container: armazene vários dados juntos, e cada dado é chamado de elemento do container.
Recipientes na vida: copos, guarda-roupas, salas de aula

1. 2 Conceito de matriz

Conceito de array: Array é um contêiner para armazenar dados com um comprimento fixo, garantindo que os tipos de dados de vários dados sejam consistentes.

1. 3 Definição de matriz

método um

formato:

Explicação detalhada do formato de definição de matriz:

Tipo de dados de armazenamento de array: Que tipo de dados pode ser armazenado no contêiner de array criado.

[]: Representa uma matriz.

Nome da matriz: Dê um nome de variável à matriz definida, que satisfaça a especificação do identificador e pode usar o nome para manipular a matriz.

new:关键字,创建数组使用的关键字。
数组存储的数据类型: 创建的数组容器可以存储什么数据类型。
[长度]:数组的长度,表示数组容器中可以存储多少个元素。
注意:数组有定长特性,长度一旦指定,不可更改。
和水杯道理相同,买了一个 2 升的水杯,总容量就是 2 升,不能多也不能少。
举例:

Defina um contêiner de matriz que pode armazenar 3 inteiros, o código é o seguinte:

Caminho dois

formato:

Por exemplo:

Defina um contêiner de matriz que armazene 1, 2, 3, 4 e 5 inteiros.

Caminho Três

formato:

数组存储的数据类型[] 数组名字 = new 数组存储的数据类型[长度];
int[] arr = new int[ 3 ];
数据类型[] 数组名 = new 数据类型[]{元素 1 ,元素 2 ,元素 3 ...};
int[] arr = new int[]{ 1 , 2 , 3 , 4 , 5 };

Por exemplo:

Defina um contêiner de matriz para armazenar 1, 2, 3, 4, 5 inteiros

1. 4 acesso à matriz

Índice: Cada elemento armazenado no array terá automaticamente um número, começando em 0, este número automático é chamado de índice do array

(index),可以通过数组的索引访问到数组中的元素。
格式:
数组的长度属性: 每个数组都具有长度,而且是固定的,Java中赋予了数组的一个属性,可以获取到数组的
长度,语句为:数组名.length ,属性length的执行结果是数组的长度,int类型结果。由次可以推断出,数
组的最大索引值为数组名.length- 1 。

Índice para acessar elementos na matriz:

Nome da matriz [índice] = valor, atribuir valores aos elementos da
matriz Variável = nome da matriz [índice], obter os elementos da matriz

Capítulo 2 Diagrama de Memória do Princípio de Matriz

2. 1 Visão geral da memória

Tipo de dados [] Nome do array = {elemento 1, elemento 2, elemento 3…};

int[] arr = { 1 , 2 , 3 , 4 , 5 };
```数组名[索引]

public static void main (String [] args) { int [] arr = new int [] {1, 2, 3, 4, 5}; // Imprime os atributos da matriz, o resultado de saída é 5 System.out.println (arr .length); }



public static void main (String [] args) { // Definir array de tipo de armazenamento, atribuir os elementos 1, 2, 3, 4, 5 int [] arr = {1, 2, 3, 4, 5}; // é O elemento de índice 0 é atribuído a 6 arr [0] = 6; // obtém o elemento no índice da matriz 0 int i = arr [0]; System.out.println (i); // gera diretamente o elemento de índice da matriz 0 System.out .println (arr [0]); }










### 内存是计算机中的重要原件,临时存储区域,作用是运行程序。我们编写的程序是存放在硬盘中的,在硬盘中的程

### 序是不会运行的,必须放进内存中才能运行,运行完毕后会清空内存。

Java虚拟机要运行程序,必须要对内存进行空间的分配和管理。

## 2. 2 Java虚拟机的内存划分

### 为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。

### 区域名称 作用

### 寄存器 给CPU使用,和我们开发无关。

### 本地方法栈 JVM在使用操作系统功能的时候使用,和我们开发无关。

A área de método armazena arquivos de classe executáveis.

A memória heap armazena objetos ou matrizes, e aqueles criados por new são todos armazenados na memória heap.

Pilha de métodos A memória usada quando o método está em execução, como o método principal em execução, entra na pilha de métodos para execução.

### JVM的内存划分:

## 2. 3 数组在内存中的存储

## 一个数组内存图

以上方法执行,输出的结果是[I@ 5 f 150435 ,这个是什么呢?是数组在内存中的地址。new出来的内容,都是在堆
内存中存储的,而方法中的变量arr保存的是数组的地址。

输出arr[ 0 ],就会输出arr保存的内存地址中数组中 0 索引上的元素

public static void main (String [] args) { int [] arr = new int [3]; System.out.println (arr); // [I @ 5 f 150435 }



## 两个数组内存图

public static void main (String [] args) { int [] arr = new int [3]; int [] arr 2 = novo int [2]; System.out.println (arr); System.out.println (arr 2); }





## 两个变量指向一个数组

# 第三章 数组的常见操作

## 3. 1 数组越界异常

### 观察一下代码,运行后会出现什么结果。

public static void main (String [] args) { // Definir a matriz e armazenar 3 elementos int [] arr = new int [3]; // Atribuir o índice da matriz arr [0] = 5; arr [1] = 6 ; arr [2] = 7; // exibe o valor do elemento nos 3 índices System.out.println (arr [0]); System.out.println (arr [1]); System.out.println (arr [ 2]); // Definir a variável de matriz arr 2 e atribuir o endereço de arr a arr 2 int [] arr 2 = arr; arr 2 [1] = 9; System.out.println (arr [1]); }















### 创建数组,赋值 3 个元素,数组的索引就是 0 , 1 , 2 ,没有 3 索引,因此我们不能访问数组中不存在的索引,程序运

行后,将会抛出 ArrayIndexOutOfBoundsException 数组越界异常。在开发中,数组的越界异常是不能出现的,一
旦出现了,就必须要修改我们编写的代码。

## 3. 2 数组空指针异常

### 观察一下代码,运行后会出现什么结果。

arr = null这行代码,意味着变量arr将不会在保存数组的内存地址,也就不允许再操作数组了,因此运行的时候
会抛出NullPointerException 空指针异常。在开发中,数组的越界异常是不能出现的,一旦出现了,就必须要修
改我们编写的代码。

### 空指针异常在内存图中的表现

public static void main (String [] args) { int [] arr = {1, 2, 3}; System.out.println (arr [3]); }


public static void main (String [] args) { int [] arr = {1, 2, 3}; arr = nulo; System.out.println (arr [0]);




## 3. 3 数组遍历【重点】

### 数组遍历: 就是将数组中的每个元素分别获取出来,就是遍历。遍历也是数组操作中的基石。

### 以上代码是可以将数组中每个元素全部遍历出来,但是如果数组元素非常多,这种写法肯定不行,因此我们需要改

造成循环的写法。数组的索引是 0 到lenght- 1 ,可以作为循环的条件出现。

## 3. 4 数组获取最大值元素

public static void main (String [] args) { int [] arr = {1, 2, 3, 4, 5}; System.out.println (arr [0]); System.out.println (arr [1]); System.out.println (arr [2]); System.out.println (arr [3]); System.out.println (arr [4]); }






public static void main (String [] args) { int [] arr = {1, 2, 3, 4, 5}; para (int i = 0; i <arr.length; i ++) { System.out.println (arr [i]); } }





### 最大值获取:从数组的所有元素中找出最大值。

### 实现思路:

### 定义变量,保存数组 0 索引上的元素

### 遍历数组,获取出数组中的每个元素

### 将遍历到的元素和保存数组 0 索引上值的变量进行比较

### 如果数组元素的值大于了变量的值,变量记录住新的值

### 数组循环遍历结束,变量保存的就是数组中的最大值

## 3. 5 数组反转

public static void main (String [] args) { int [] arr = {5, 15, 2000, 10000, 100, 4000}; // Defina a variável e salve o elemento indexado em 0 na matriz int max = arr [0]; // Percorre o array e retira cada elemento para (int i = 0; i <arr.length; i ++) { // Compare o elemento percorrido com a variável max // Se o elemento do array for maior que max if (arr [i]> max ) { // max registra o valor máximo max = arr [i]; } } System.out.println ("O valor máximo da matriz é:" + max); }














### 数组的反转: 数组中的元素颠倒顺序,例如原始数组为 1 , 2 , 3 , 4 , 5 ,反转后的数组为 5 , 4 , 3 , 2 , 1

### 实现思想:数组最远端的元素互换位置。

### 实现反转,就需要将数组最远端元素位置交换

### 定义两个变量,保存数组的最小索引和最大索引

### 两个索引上的元素交换位置

### 最小索引++,最大索引--,再次交换位置

### 最小索引超过了最大索引,数组反转操作结束

# 第四章 数组作为方法参数和返回值

## 4. 1 数组作为方法参数

### 以前的方法中我们学习了方法的参数和返回值,但是使用的都是基本数据类型。那么作为引用类型的数组能否作为

### 方法的参数进行传递呢,当然是可以的。

### 数组作为方法参数传递,传递的参数是数组内存的地址。

public static void main (String [] args) { int [] arr = {1, 2, 3, 4, 5}; / * A variável definida no loop min = 0 índice mínimo max = arr.length-1 índice máximo min ++, max- * / for (int min = 0, max = arr.length -1; min <= max; min ++, max-) { // Use variáveis ​​de terceiros para completar a troca de elementos na matriz int temp = arr [min ]; arr [min] = arr [max]; arr [max] = temp; } // Após a inversão, atravesse a matriz para (int i = 0; i <arr.length; i ++) { System.out.println ( arr [i]); } }

















## 4. 2 数组作为方法返回值

### 数组作为方法的返回值,返回的是数组的内存地址

public static void main (String [] args) { int [] arr = {1, 3, 5, 7, 9}; // Chamar método, passar array printArray (arr); } / * Criar método, método recebe tipo de array Parâmetro de passagem da matriz * / public static void printArray (int [] arr) { for (int i = 0; i <arr.length; i ++) { System.out.println (arr [i]); } }












public static void main (String [] args) { // Chame o método e receba o valor de retorno do array // Receba o endereço de memória do array int [] arr = getArray (); for (int i = 0; i <arr .length; i ++) { System.out.println (arr [i]); } } / * Criar método, o valor de retorno é o tipo de matriz









## 4. 3 方法的参数类型区别

## 代码分析

### 1. 分析下列程序代码,计算输出结果。

### 创建方法,返回值是数组类型

return retorna o endereço da matriz
* /
public static int [] getArray () { int [] arr = {1, 3, 5, 7, 9}; // retorna o endereço da matriz e retorna ao chamador return arr; }



public static void main (String [] args) { int a = 1; int b = 2; System.out.println (a); System.out.println (b); mudança (a, b); System.out.println (a); System.out.println (b); }








### 2. 分析下列程序代码,计算输出结果。

### 总结:

### 方法的参数为基本类型时,传递的是数据值. 方法的参数为引用类型时,传递的是地址值.

mudança de vazio público estático (int a, int b) { a = a + b; b = b + a; }


public static void main (String [] args) { int [] arr = {1, 3, 5}; System.out.println (arr [0]); mudança (chegada); System.out.println (arr [0]); }




alteração de vazio público estático (int [] arr) { arr [0] = 200; }

Acho que você gosta

Origin blog.csdn.net/weixin_43419256/article/details/108198318
Recomendado
Clasificación