[Java da entrada ao solo] matrizes e métodos

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.
Insira a descrição da imagem aqui
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.
Insira a descrição da imagem aqui
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; 
}

Acho que você gosta

Origin blog.csdn.net/weixin_51678389/article/details/109155848
Recomendado
Clasificación