um. Sobre as características das matrizes
1. Em Java, há uma verificação de limites se você usa matrizes ou coleções. Se a operação estiver fora dos limites, será obtida uma tempo de execução.
2. As matrizes podem salvar apenas tipos específicos. As matrizes podem salvar tipos de dados nativos, mas as coleções não podem. As coleções não processam objetos em tipos específicos. Eles processam todos os objetos de acordo com o tipo de objeto. O que é armazenado na coleção é a referência do objeto e não o próprio objeto.
3. A classe de coleta pode salvar apenas referências aos objetos. As matrizes podem ser criadas para salvar diretamente os tipos de dados nativos ou salvar referências a objetos. Na coleção, você pode usar a classe Wrapper, como Integer, Double, etc. para salvar valores de tipo de dados nativos.
Exemplo Código:
int a = 10; Inteiro inteiro = novo número inteiro (a); int b = Integer.IntValue (); System.out.println (a = b);
4. A matriz de objetos e a matriz de tipo de dados nativos são quase os mesmos em uso; A única diferença é que a matriz de objetos salva referências e a matriz de tipo de dados nativo mantém o valor do tipo de dados nativo.
2. Uso correto de matrizes
Se você precisar armazenar uma grande quantidade de dados, por exemplo, se precisar ler 100 números, precisará definir 100 variáveis. Obviamente, não faz muito sentido repetir o código 100 vezes. Como resolver esse problema? O idioma Java fornece uma estrutura de dados de matriz (matriz), que é um contêiner que pode armazenar elementos do mesmo tipo de dados e pode armazenar 100 números em uma matriz. Matrizes serão de grande ajuda neste momento ~
1. Benefícios das matrizes
Existe alguma diferença entre armazenar dados e não armazenar dados? A maior vantagem das matrizes é que elas podem numerar automaticamente todos os elementos armazenados. Observe que o número começa de 0. Fácil de operar esses dados.
Por exemplo, o número do aluno pode ser usado para encontrar o aluno correspondente.
2. Formato de matriz
Formato 1:
Tipo de elemento [] Nome da matriz = novo tipo de elemento [Número de elementos ou comprimento da matriz];
Exemplo:
int [] arr = new int [5]; arr [0] = 1; arr [1] = 2;
Formato 2:
Tipo de elemento [] Nome da matriz = novo elemento tipo [] {elemento, elemento,…};
int [] arr = new int [] {3,5,1,7}; int [] arr = {3,5,1,7};Nota: Ao alocar espaço para uma matriz, você deve especificar o número de elementos que a matriz pode armazenar para determinar o tamanho da matriz. O tamanho da matriz não pode ser modificado após a criação da matriz. Você pode usar o atributo de comprimento para obter o tamanho da matriz.
3. Declare variáveis de matriz
Para usar uma matriz, a matriz deve ser declarada no programa e o tipo de elemento da matriz deve ser especificado.
= Metade esquerda:
Primeiro, escreva o lado esquerdo para esclarecer que o tipo de elemento é int e o contêiner usa uma matriz. Então, como você identifica a matriz? . Então, use um símbolo especial [] colchetes para representá -lo. Para usar uma matriz, você precisa dar um nome à matriz, por isso nomeamos a matriz X aqui. Em seguida, siga o sinal igual.
O código reflete:
int [] x
Nota: Int X [] também é um formato para criar matrizes. Recomenda -se declarar matrizes int [] x.
4. Crie uma matriz
= Metade direita:
Para usar uma nova palavra -chave, chamada de nova. O novo é usado para gerar uma entidade de contêiner na memória. O armazenamento de dados requer espaço. O espaço para armazenar muitos dados é aberto com o novo operador. novo int [3]; Este 3 é o número de elementos. A parte à direita define uma matriz real na memória que pode armazenar 3 elementos.
Novo Int [3] faz duas coisas. Primeiro, use o novo int [3] para criar uma matriz e atribua a referência à variável da matriz x.
int [] x=new int[3];
Que tipo é x?
Qualquer variável deve ter seu próprio tipo de dados. Observe que este x não é do tipo int. Int representa o tipo de elemento no contêiner. Então X é do tipo de matriz.
Uma matriz é um tipo de dados separado. Os tipos de dados são divididos em duas escolas principais, que são divididas em tipos básicos de dados e tipos de dados de referência. A segunda maior escola é o tipo de dados de referência. Então, agora você entrou em contato com um dos três tipos de dados referenciados. Isto é, os colchetes do tipo de matriz representam a matriz.
int[] arr = new int[5]; O que acontece na memória?
Quando qualquer programa está em execução, é necessário abrir espaço na memória.int [] arr = new int [5]; como é esse programa na memória? Isso envolve o espaço aberto pela Java Virtual Machine ao executar o programa. Então, quanto espaço Java se abre? Continue aprendendo a estrutura de memória do Java.
5. Inicialização da matriz
Método 1: Não use o operador novo
int [] arr = {1, 2, 3, 4, 5};Método 2: Use o operador novo
int [] arr2 = new int [] {1, 2, 3, 4, 5}; int [] arr3 = new int [3]; ar3 [0] = 1; ar3 [1] = 5; arr3 [2] = 6;Se o operador novo não for usado na inicialização da matriz. Nota: O método de escrita a seguir está incorreto.
int [] arr; arr = {1,2,3,4,5};Neste momento, inicializando a matriz, você deve colocar declaração, criação e inicialização em uma declaração. Separá -lo causará erros de sintaxe.
Então você só pode escrever o seguinte:
int [] arr = {1,2,3,4,5};6. Array Traversal
public static void main (string [] args) {int [] x = {1, 2, 3}; para (int y = 0; y <3; y ++) {System.out.println (x [y]); // System.out.println ("x ["+y+"] ="+x [y]); Efeito de impressão x [0] = 1;} // Esta é a primeira operação comum das matrizes. Traversal}Há um atributo na matriz que pode obter o número de elementos na matriz, ou seja, o comprimento da matriz. O nome da matriz.length
public static void main (string [] args) {int [] x = {1, 2, 3}; para (int y = 0; y <x.lengthnen; y ++) {System.out.println (x [y]); // System.out.println ("x ["+y+"] ="+x [y]; Efeito de impressão x [0] = 1;} // Esta é a primeira operação comum das matrizes. Traversal}7. Exceções comuns de matrizes
Um marcador de canto de matriz cruza a exceção dos limites: Nota: O marcador de ângulo da matriz começa a partir de 0.
public static void main (string [] args) {int [] x = {1, 2, 3}; system.out.println (x [3]); // java.lang.arrayIndexoutOfBoundSexception}Exceção de dois nulos do ponteiro:
public static void main (string [] args) {int [] x = {1, 2, 3}; x = null; system.out.println (x [1]); // java.lang.nullPointerException}Variedade:
Quando usar matrizes: quando houver muitos elementos, a fim de facilitar a operação dessas matrizes, o armazenamento temporário será realizado primeiro e o contêiner usado é uma matriz.
Características:
O comprimento da matriz é fixo.
8. Operações comuns de matrizes
1: Caso:
Uma matriz retira o valor máximo
/*Defina uma função para obter o valor máximo:
1. Determine o resultado: Tipo de valor de retorno INT
2. Conteúdo desconhecido: o valor máximo do qual a matriz não é determinada, a matriz não é determinada.
Ideias:
1. Defina uma variável e registre os elementos maiores da matriz.
2. Itera por toda a matriz e compare cada elemento da matriz com a variável.
3. Quando uma variável encontrar um elemento maior que ele, deixe a variável registrar o valor do elemento. Quando o loop termina, o valor máximo é gerado.
*/public static int getMax (int [] arr) {// Defina a variável para registrar um valor maior e inicializá -lo em qualquer elemento da matriz. int max = arr [0]; para (int x = 1; x <arr.length; x ++) {if (arr [x]> max) max = arr [x];} retornar max;}Dois: classificação direta
Caso 2: Classifique as matrizes usando a classificação direta:
/*
Selecione classificar.
Compare os elementos com um canto com outros elementos.
Na primeira extremidade do loop interno, o maior valor aparece na posição do ângulo da cabeça.
*/public static void selectSort (int [] arr) {for (int x = 0; x <arr.length-1; x ++) {for (int y = x+1; y <arr.length; y ++) // Por que o valor de inicialização de y x+1? Porque toda vez que você compara, // é comparado com o próximo elemento marcado no canto X. {if (arr [x]> arr [y]) {int temp = arr [x]; arr [x] = arr [y]; arr [y] = temp;}}}}Três: classificação de bolhas
/*Classificação borbulhante. Método de comparação: Compare dois elementos adjacentes. Se as condições forem atendidas, a substituição da posição será executada. Princípio: o loop interno termina uma vez e o maior valor aparece na posição do canto da cauda. */public estático void bubblesort (int [] arr) {for (int x = 0; x <arr.length-1; x ++) {for (int y = 0; y <arn.length-1; y ++) //-x: deixe a meta-desducância de cada participação na comparação. //-1: Evite marcas de canto cruzando os limites. {if (arr [y]> arr [y+1]) {int temp = arr [y]; arr [y] = arr [y+1]; arr [y+1] = temp;}}}}Quatro: pesquisa meio dobrada (método de partícula dupla)
/*Para melhorar a eficiência da pesquisa, você pode usar o método de pesquisa semi-acabamento. Nota: Esta pesquisa é válida apenas para matrizes ordenadas. Este método também se tornou um método de pesquisa binária. */public static int halteseach (int [] arr, int key) {int min, médio, max; min = 0; max = arr.length -1; mid = (max + min)/2; while (arr [mid]! (max+min)/2;} retornar meio;}Cinco: Matriz Flip
/*A inversão é na verdade a substituição posicional dos elementos das marcas de cabeça e canto e, em seguida, as marcas de canto da cabeça são aumentadas automaticamente. A marca do canto da cauda é autodenomiada. Quando a marca do ângulo da cabeça é <marca do ângulo da cauda, a ação de substituição pode ser executada. */public estático void reversearray (int [] arr) {for (int start = 0, end = ar.Length-1; start <end; start ++, end-) {swap (arr, start, end);}} // executa o deslocamento posicional dos elementos da matriz. public static void Swap (int [] arr, int a, int b) {int temp = arr [a]; arr [a] = arr [b]; arr [b] = temp;}11. Array bidimensional
Uso de matrizes
Explicação detalhada das matrizes Java
Traversal: ToString () retorna os elementos da matriz como uma corda
Classificar: classificar () pedir a matriz em ordem ascendente
Pesquisa: o BinarySearch () pesquisa o elemento especificado na matriz especificada, retorna o índice do elemento. Se nenhuma devolução for encontrada (-Insert Point-1) Nota: Ao usar a função de pesquisa, a matriz deve ser classificada primeiro.
Array bidimensional:
Fumar:
Não tem dinheiro para comprar 1 variável
Um pouco de dinheiro é um pacote de matriz unidimensional 20 variáveis
Pacote muito rico de 10 (matriz bidimensional) 2D
Array bidimensional: em essência, o armazenamento é uma matriz unidimensional.
Definição da matriz:
Tipo de matriz [] [] Nome da matriz = novo tipo de matriz [Número da matriz unidimensional] [Número de elementos em cada matriz unidimensional];
Explicação detalhada das matrizes Java
Pergunta: Por que A.Length = 3, A [0] .Length = 4?
Explicação detalhada das matrizes Java
Inicialização da matriz:
Inicialização estática:
int [][] a = new int[][]{ {12,34,45,89},{34,56,78,10},{1,3,6,4} };
Inicialização dinâmica:
Explicação detalhada das matrizes Java
Operações comuns para matrizes bidimensionais:
1. Travessia uma matriz bidimensional
2. Resuma matrizes bidimensionais
classe Demo3 {// Defina uma função funcional que atravessa uma matriz bidimensional public estática void Printarr2 (int [] [] a) {// 1. Desmonte a matriz bidimensional para (int i = 0; i <A.Length; i++) {// 2. j ++) {System.out.print (a [i] [j]+","); }}} // Defina uma função para calcular a soma de acumulação de elementos em uma matriz bidimensional public estática long getUm (int [] [] a) {// 0. Defina uma variável de resultado Sum long = 0l; // 1. Desmonte a matriz bidimensional para (int i = 0; i <A.Length; i ++) {// 2. Desmonte a matriz unidimensional para obter dados para (int j = 0; j <a [i] .Length; j ++) {sum+= a [i] [j]; }} retornar sum;} // Estatísticas O número de elementos em uma matriz bidimensional public static int getDatacount (int [] [] a) {// 0. Registre o número de elementos int conting = 0; // 1. Desmonte a matriz bidimensional para (int i = 0; i <A.Length; i ++) {// 2. Desmonte a matriz unidimensional para obter dados para (int j = 0; j <a [i] .Length; j ++) {count ++; }} retornar contagem;} public static void main (string [] args) {int [] [] a = new int [] [] {{23,4,5}, {2}, {4,5,78,56,90}}; printarr2 (a); System.out.println (); System.out.println ("A soma acumulada é:"+getSum (a)); System.out.println ("Número estatístico de elementos:"+getDatacount (a)); System.out.println ("Hello World!");}}}}}}}}}Os acima são todos os tópicos sobre as matrizes Java. Como você pode ver, as matrizes Java são uma estrutura de dados muito poderosa.