Array
Uma matriz é um contêiner com um comprimento fixo de dados para garantir que os tipos de dados de vários dados sejam consistentes. Nota: Isso é fixo, lembre-se de que, uma vez que o comprimento da matriz é especificado, o comprimento é fixo.
Definição de array
A primeira maneira
数据类型[] 数组名 = new 数据类型[长度];
Explicação detalhada do formato de definição de array:
①Tipo de dados: que tipo de dados pode ser armazenado no contêiner de array criado.
② []: Representa uma matriz.
③Nome do array: dê um nome de variável ao array definido para atender à especificação do identificador, e o nome do array pode ser usado para manipular o array.
④new: palavra-chave, a palavra-chave usada para criar um array.
⑤ [Comprimento]: O comprimento do array, indicando quantos elementos podem ser armazenados no contêiner do array.
Nota: A matriz tem um recurso de comprimento fixo, uma vez que o comprimento é especificado, ele não pode ser alterado. O motivo é o mesmo de um copo d'água, comprei um copo d'água de 2 litros com capacidade total para 2 litros, não devia haver muita água nele.
Exemplo: defina um contêiner de matriz que pode armazenar 3 inteiros, o código é o seguinte:
int[] arr = new int[3];
A segunda maneira
数据类型[] 数组名 = new 数据类型[] {
元素1,元素2,元素3 ...};
int[] arr = new int[] {
1, 2, 3, 4, 5}
A terceira via
数据类型[] 数组名 = {
元素1,元素2,元素3 ...};
int[] arr = {
1, 2, 3, 4, 5};
Acesso de matriz
Índice: Cada elemento armazenado no array terá automaticamente um número. A partir de 0, este número automático é chamado de índice do array, e os elementos do array podem ser acessados por meio do índice do array.
formato:
数组名[索引] 例如:arr[1]
O atributo de comprimento da matriz: cada matriz tem um comprimento e é fixo. Java tem um atributo da matriz, você pode obter o comprimento da matriz, a instrução é: nome da matriz.comprimento, o resultado da execução do atributo comprimento é o comprimento da matriz , Resultado do tipo Int. Pode-se inferir que a matriz do índice é zero, então o valor máximo do índice da matriz é o nome da matriz .length-1
elemento do índice de acesso à
matriz ① nome da matriz [índice] = valor atribuído ao elemento da matriz
② variável = nome da matriz [índice], obtém os elementos da matriz
Diagrama de memória de princípio de matriz
A memória é um importante original do computador, uma área de armazenamento temporário, que serve para rodar programas. O programa que escrevemos é armazenado no disco rígido, o programa no disco rígido não será executado, deve ser carregado na memória para ser executado e a memória será apagada após a execução. Para executar um programa em uma máquina virtual Java, a memória deve ser alocada e gerenciada.
Divisão da memória da máquina virtual Java
Para melhorar a eficiência do cálculo, o espaço é dividido em diferentes áreas, pois cada área possui uma forma específica de processamento de dados e gerenciamento de memória.
Armazenamento de array na memória
public static void main(String[] args) {
int[] arr = new int[3];
System.out.println(arr); // [I@5f150435
}
O método acima é executado, o resultado de saída é [I @ 5f150435, o que é isso? É o endereço do array na memória. O novo conteúdo é armazenado na memória heap, a variável arr no método é armazenada na memória stack e o endereço do array é armazenado.
Exceção de matriz fora dos limites
Crie uma matriz, atribua 3 elementos, o índice da matriz é 0, 1, 2 e não há índice 3, portanto, não podemos acessar o índice que não existe na matriz. Se o programa de acesso for executado, ele lançará uma exceção de canto de array fora dos limites. No desenvolvimento, a marca de canto da matriz está fora dos limites, a anormalidade não pode aparecer, uma vez que ocorra, devemos modificar o código que escrevemos.
Exceção de ponteiro nulo de matriz
public static void main(String[] args) {
int[] arr = {
1, 2, 3};
arr = null; //模拟数组空指针异常
System.out.println(arr[0]);
}
arr = null; Esta linha de código significa que a variável arr não salvará o endereço de memória do array e não tem mais permissão para manipular o array, portanto, ela lançará um NullPointerException durante a execução. No desenvolvimento, a exceção fora dos limites do array não pode aparecer.Uma vez que ocorre, devemos também modificar o código que escrevemos. Quando escrevemos código, devemos evitar essas duas exceções.
Travessia de matriz
O que é travessia? Traversing é, na verdade, obter cada elemento do array separadamente.
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]);
}
O código acima pode atravessar todos os elementos do array, mas se os elementos do array forem muitos, essa forma de escrever definitivamente não funcionará, então precisamos transformá-lo em um modo de loop. O índice do elemento na matriz é de 0 a comprimento-1, que pode aparecer como uma condição do loop.
public static void main(String[] args) {
int[] arr = {
1, 2, 3, 4, 5};
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
Obtenha o elemento de valor máximo na matriz.
Idéias de implementação:
①Defina a variável e salve o elemento no índice 0 na
matriz ②Versa a matriz para obter cada elemento na matriz
③Compare o elemento percorrido com a variável no índice 0
④Se O valor do elemento da matriz é maior que o valor da variável, e a variável registra o novo valor.
⑤O percurso do loop da matriz termina e a variável salva o valor máximo na matriz
public static void main(String[] args) {
int[] arr = {
3, 23, 7, 53, 12};
int x = arr[0];
for(int i = 0; i < arr.length; i++) {
if(arr[i] > x) {
x = arr[i];
}
}
System.out.println(x);
}
Classificação da matriz
Princípio de classificação por bolha : compare dois números adjacentes um após o outro, colocando o número decimal na frente e o número grande atrás. Ou seja, na primeira viagem: primeiro compare o primeiro e o segundo números, coloque o número decimal antes do número grande e, em seguida, compare o segundo e o terceiro número, coloque o número decimal antes do número grande e assim por diante Continue até que os dois últimos números sejam comparados e o número decimal seja colocado antes do número grande. Repita a primeira etapa até que todas as classificações sejam concluídas.
public static void main(String[] args) {
int[] arr = {
24, 69, 80, 57, 13};
//外层循环控制比较趟数 5个元素一共需要比较4趟
for(int i = 1; i < arr.length; i++) {
//内层循环控制每一趟的比较次数,每一趟需要比较arr.length-i次
for(int j = 0; j < arr.length-i; j++) {
if(arr[j] > arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
for(int i : arr) {
System.out.println(i);
}
}
Princípio de seleção e classificação : use o primeiro bit da matriz para comparar o tamanho com cada bit atrás da matriz, se o primeiro bit for maior que o j-ésimo bit, troque; a seguir, use o segundo bit para comparar com cada um dos bits a seguir. analogia.
public static void main(String[] args) {
int[] arr = {
24, 69, 80, 57, 13};
//外层循环控制比较躺数 5个元素一共需要比较4趟
for(int i = 0;i < arr.length-1; i++) {
//内层循环控制每一趟的比较次数 第i位和数组中后面的每一位元素进行比较
for(int j = i+1; j < arr.length; j++) {
if(arr[i] > arr[j]) {
int temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
}
for(int i : arr) {
System.out.println(i);
}
}
método
Quando estamos aprendendo operadores, criamos uma nova classe e método principal para cada operador separadamente.Vamos descobrir que escrever código dessa forma é muito complicado e há muitos códigos duplicados. Esses códigos duplicados podem ser evitados? Isso precisa ser realizado por métodos.
Método: Extraia uma função e defina o código separadamente em uma chave para formar uma única função. Quando precisarmos dessa função, podemos chamá-la. Isso não apenas percebe a capacidade de reutilização do código, mas também resolve o fenômeno da redundância do código.
Definição de método
修饰符 返回值类型 方法名(参数列表) {
....
return ;
}
Dois pontos claros ao definir métodos:
Requisitos: Definir métodos para alcançar o cálculo da soma de dois inteiros.
①Limpe o tipo de valor de retorno: o método calcula a soma de inteiros e o resultado deve ser um número inteiro.O tipo de valor de retorno é definido como tipo int.
② Limpar lista de parâmetros: Não está claro quais são os dois inteiros calculados, mas pode ser determinado como um inteiro.A lista de parâmetros pode definir duas variáveis do tipo int, que são passadas pelo chamador ao chamar o método.
Nota:
①O método deve ser definido fora do método principal da classe
②O método não pode ser definido no método
Chamada de método
① Chamada direta: escreva diretamente a chamada do nome do método
public static void main(String[] args) {
show();
}
public static void show() {
System.out.println("方法被调用");
}
② Chamada de atribuição: chame o método, defina as variáveis na frente do método e receba o valor de retorno do método
public static void main(String[] args) {
int sum = getSum(5, 6);
System.out.println(sum);
}
public static int getSum(int a, int b) {
return a + b;
}
③ Chamada de declaração de saída
public static void main(String[] args) {
System.out.println(getSum(5, 6));
}
public static int getSum(int a, int b) {
return a + b;
}