Array detalhado Java unidimensional e array bidimensional (conhecimento essencial de Java)

Array é a estrutura de dados mais comum, que é dividida em array de primeiro nível, array bidimensional e array multidimensional. É uma sequência de dados de tipo básico ou sequência de objeto que encapsula elementos do mesmo tipo de dados com um identificador.

Matriz unidimensional

O tipo de dados dos elementos da matriz determina o tipo de dados da matriz, que pode ser tipos de dados básicos e outros tipos de referência. O símbolo "[]" indica que a variável é uma variável do tipo array. Um único "[]" significa uma matriz unidimensional.

Crie uma matriz unidimensional

Existem duas maneiras de declarar uma matriz unidimensional:

数组元素类型 数组名字[];
int a[];

数组元素类型[] 数组名字;
int[] b;

Depois de declarar o array, você não pode acessar nenhum de seus elementos, porque declarar o array apenas fornece o nome do array e o tipo de dados dos elementos, e não aloca espaço de memória.

Ao declarar uma matriz, você pode alocar espaço de memória para a matriz, para alocar a declaração e a memória juntas para execução.

数组元素类型  数组名 = new 数组元素类型[数组元素的个数];
int month[] = new int[12];

Atribuir um valor a uma matriz unidimensional

Os arrays podem ser inicializados da mesma forma que os tipos de dados básicos, ou seja, os valores iniciais são atribuídos.A inicialização dos arrays pode inicializar cada elemento do array separadamente.

A inicialização da matriz tem as três formas a seguir:

int a[] = {
    
    1,2,3};          // 第一种方式
int[] b = new int[]{
    
    4,5,6}; // 第二种方式
int c[] = new int[3];	    // 第三种方式
c[0] = 7;					// 第一个元素赋值
c[1] = 8;					// 第二个元素赋值
c[2] = 9;					// 第三个元素赋值

Obtenha o comprimento da matriz

Às vezes, a matriz aloca espaço e não especificamos isso neste momento, podemos obter o comprimento até arr.lenth.

int a[] = {
    
    1,2,3};   
System.out.println(a.length);

Erros comuns

Matriz bidimensional

As matrizes bidimensionais costumam ser usadas para representar tabelas bidimensionais. O primeiro elemento representa a linha onde o elemento está localizado e o segundo subscrito representa a coluna onde o elemento está localizado.

Crie uma matriz bidimensional

Existem duas maneiras de declarar uma matriz bidimensional:

数组元素类型 数组名字[][];
int tdarr1[][];

数组元素类型[ ][ ] 数组名字;
int[][] tdarr2;

Como uma matriz unidimensional, uma matriz bidimensional não tem espaço de memória alocado quando é declarada.A nova palavra-chave também deve ser usada para alocar memória antes que os elementos possam ser acessados.

Existem duas maneiras de alocar memória:

int a[][];
a = new int[2][3];	// 直接分配行列

int b[][];
b = new int[2][];	// 先分配行,不分配列
b[0] = new int[2];	// 给第一行分配列
b[1] = new int[2];	// 给第二行分配列

Nota: Para criar uma matriz bidimensional, você só pode declarar o comprimento das linhas, mas não o comprimento das colunas. O comprimento da linha deve ser declarado! ! !

Atribuir um valor a uma matriz bidimensional

int tdarr1[][] = {
    
    {
    
    1,3,5},{
    
    4,6,7}};  			// 第一种方式

int tdarr2[][] = new int[][] {
    
    {
    
    1,3,5},{
    
    4,6,7}}; // 第二种方式

int tdarr3[][] = new int[2][3];					// 第三种方式
tdarr3[0] = new int[] {
    
    1,2,3};					// 给第一行分配一个一维数组
tdarr3[1][0] = 63;								// 给第二行第一列赋值为63
tdarr3[1][0] = 10;								// 给第二行第一列赋值为10
tdarr3[1][0] = 7;								// 给第二行第一列赋值为7

Como pode ser visto neste exemplo, cada elemento de uma matriz bidimensional também é uma matriz, então o primeiro método de atribuição direta, há colchetes dentro das chaves, porque cada elemento é uma matriz unidimensional; o segundo método usa new O método é semelhante a uma matriz unidimensional. O terceiro tipo é bastante especial.Depois que o espaço de memória é alocado, existem dois métodos de atribuição, seja atribuindo diretamente um array unidimensional a uma linha ou atribuindo um valor a cada elemento de uma linha separadamente.

Use cenários de matrizes bidimensionais

public static void main(String[] args) {
    
    
	char arr[][] = new char[4][];							// 创建二维数组,数组长度(行)为4
	arr[0] = new char[] {
    
     '春', '眠', '不', '觉', '晓' };	// 为每一行赋值
	arr[1] = new char[] {
    
     '处', '处', '闻', '啼', '鸟' };
	arr[2] = new char[] {
    
     '夜', '来', '风', '雨', '声' };
	arr[3] = new char[] {
    
     '花', '落', '知', '多', '少' };
	System.out.println("---横版---");
	for (int i = 0; i < 4; i++) {
    
    							// 循环4行
		for (int j = 0; j < 5; j++) {
    
    						// 循环5列
			System.out.print(arr[i][j]);					// 输出数组中的元素
		}
		if (i % 2 == 0) {
    
    
			System.out.print(",");							// 如果是1,3句输出逗号
		} else {
    
    		
			System.out.print("。");							// 如果是2,4句输出句号
		}
		// i行结束则换行(注意在哪个循环内执行)
		System.out.println();
	}
	System.out.println();
	System.out.println("---竖版---");
	for (int j = 0; j < 5; j++) {
    
    							// 列变行
		for (int i = 3; i >= 0; i--) {
    
    						// 行变列,反序输出			
			System.out.print(arr[i][j]);					// 输出数组中的元素
		}
		System.out.println();								// 换行
	}
	// 第5行单独输出标点符号
	System.out.println("。,。,");							// 输出最后的标点
}

resultado da corrida:

Matrizes multidimensionais

Aqueles com dimensões superiores às matrizes unidimensionais são chamados de matrizes multidimensionais. Em teoria, as matrizes bidimensionais também pertencem a matrizes multidimensionais. Java também oferece suporte a matrizes tridimensionais, matrizes quadridimensionais e outras matrizes multidimensionais. O método de criação de outras matrizes multidimensionais é semelhante ao das matrizes bidimensionais.

int a1[][][] = new int[3][4][5];				// 创建三维数组
char b1[][][][] = new char[6][7][8][9];			// 创建四维数组

Matriz irregular

Matrizes irregulares são compatíveis com java. Por exemplo, em uma matriz bidimensional, o número de elementos em linhas diferentes pode ser diferente:

int a[][] = new int[3][];		// 创建二维数组,指定行数,不指定列数
a[0] = new int[5];				// 第一行分配5个元素
a[1] = new int[3];				// 第二行分配3个元素
a[2] = new int[4];				// 第三行分配4个元素

Exemplo de código para a saída de todos os elementos em uma matriz bidimensional irregular:

public static void main(String[] args) {
    
    
	int a[][] = new int[3][];				// 创建二维数组,指定行数,不指定列数
	a[0] = new int[] {
    
    52,64,85,12,3,64};	// 第一行分配6个元素
	a[1] = new int[] {
    
    41,99,2};				// 第二行分配3个元素
	a[2] = new int[] {
    
    285,61,278,2};		// 第三行分配4个元素
	for (int i = 0; i < a.length; i++) {
    
    
		System.out.print("a[" + i +"]中有" + a[i].length + "个元素,分别是:");
		for (int tmp : a[i]) {
    
    				//foreach循环输出元素
			System.out.print(tmp + " ");
		}
		System.out.println();
	}
}

Resultado de saída:

Operação básica da matriz

Percorrer uma matriz unidimensional é muito simples e fácil de entender. Percorrer uma matriz bidimensional requer uma camada dupla para o loop. O comprimento da matriz pode ser obtido por meio da propriedade de comprimento da matriz.

Iterar sobre a matriz

Exemplo de código:

public static void main(String[] args) {
    
    
	int b[][] = new int[][] {
    
    {
    
    1},{
    
    2,3},{
    
    4,5,6}}; // 定义二维数组
	for (int i = 0; i < b.length; i++) {
    
    
		for (int j = 0; j < b[i].length; j++) {
    
    
			System.out.print(b[i][j]);
		}
		System.out.println();
	}
}

Resultado de saída:

Esta gramática precisa ser dominada: se houver uma matriz bidimensional a [] [], a.length retorna o número de linhas na matriz e a [0] .length retorna o número de colunas na primeira linha. Da mesma forma, a [n] retorna o número de colunas na linha n + 1. Como a matriz bidimensional pode ser irregular, é melhor usar a propriedade de comprimento para controlar o número de loops ao percorrer o matriz bidimensional.

Preencher e substituir em lote os elementos da matriz

Após a definição dos elementos na matriz ser concluída, o método estático fill () da classe Arrays pode ser usado para alocar os elementos na matriz, o que tem o efeito de preencher e substituir. O método fill () pode atribuir o valor int especificado para o tipo int Cada elemento da matriz.

A sintaxe é a seguinte:

Array.fill(int[] a , int value)

a: O valor da matriz a ser alocado
: o valor de todos os elementos da matriz deve ser armazenado

Exemplo de código:

public static void main(String[] args) {
    
    
	int arr[] = new int[5];
	arr[0] = 9;
	Arrays.fill(arr, 8);
	for (int i = 0; i < arr.length; i++) {
    
    
		System.out.println("第" + i + "个元素是: " + arr[i]);
	}
}

Resultado de saída:

Dificuldades

Por que o índice da matriz começa em 0?

Isso é para herdar a tradição da linguagem assembly, a partir de 0, é conveniente para o computador fazer operações binárias e pesquisas.

O comprimento da matriz multidimensional

A propriedade de comprimento só pode indicar o comprimento de uma matriz unidimensional. Quando uma matriz bidimensional é usada, a matriz bidimensional é convertida em uma forma de "matriz unidimensional [matriz unidimensional]", ou seja , os elementos de uma matriz unidimensional ainda são uma matriz unidimensional.

Acho que você gosta

Origin blog.csdn.net/weixin_43888891/article/details/113101059
Recomendado
Clasificación