Considere as seguintes perguntas antes de iniciar este artigo
Como obter o comprimento de uma matriz sem usar nenhum IDE com função de preenchimento automático? E, como obter o comprimento de uma corda?
Pedi a programadores de diferentes níveis, incluindo níveis júnior e intermediária. Nenhum deles pode responder a essa pergunta com precisão e confiança (se você puder responder a essa pergunta com precisão e confiança, ela prova que você é melhor nesse conhecimento do que a maioria dos programadores intermediários). Como muitos IDEs agora têm funções de conclusão de código, os desenvolvedores podem entender muitos problemas muito superficialmente.
A resposta correta para a pergunta acima deve ser a seguinte:
int [] arr = new int [3]; system.out.println (arr.length); // use o comprimento para obter o grau de array string str = "abc"; system.out.println (str.Length ()); // use comprimento () para obter o comprimento da string
Portanto, a questão é: por que a matriz tem um atributo de comprimento, mas a string não? Ou, por que as strings têm length() , mas as matrizes não têm?
Por que a matriz tem um atributo de comprimento?
Primeiro, uma matriz é um objeto de contêiner que contém um número fixo de valores do mesmo tipo. Depois que a matriz é criada, seu comprimento é fixo. O comprimento da matriz pode ser usado como o comprimento da variável da instância final. Portanto, o comprimento pode ser considerado como um atributo de uma matriz.
Existem duas maneiras de criar uma matriz:
1. Crie uma matriz através de expressões de matriz.
2. Crie uma matriz inicializando os valores.
De qualquer maneira, uma vez que a matriz é criada, seu tamanho é fixo.
O método de criar uma matriz usando uma expressão é a seguinte, que especifica o tipo de elemento, a dimensão da matriz e o comprimento da matriz de pelo menos uma dimensão.
Este método de declaração atende aos requisitos porque especifica o comprimento de uma dimensão (a matriz possui tipo int, dimensão é 2 e a primeira dimensão é 3)
int [] [] arr = new int [3] [];
Ao criar uma matriz usando a inicialização da matriz, você precisa fornecer todos os valores iniciais. O formulário deve usar {e} para incluir todos os valores iniciais e separá -los.
int [] arr = {1,2,3};Observação:
Pode haver uma pergunta aqui. Como o tamanho da matriz é especificado quando inicializado, int[][] arr = new int[3][];定a matriz sem dar o tamanho da segunda dimensão da matriz. Então, como é a duração deste ARR "definido"?
De fato, o comprimento do ARR é 3. De fato, todas as matrizes em Java, não importa quantas dimensões, são na verdade matrizes unidimensionais. Por exemplo, ARR, 3 espaços são alocados, cada espaço armazena o endereço de uma matriz unidimensional, que se torna uma matriz "bidimensional". Mas para o ARR, seu comprimento é 3.
int [] [] a = new int [3] []; system.out.println (a.Length); // 3INT [] [] b = new int [3] [5]; System.out.println (B.Length); // 3
Por que não há classe de matriz como string definida em java
Como as matrizes também são objetos, o código a seguir também é legal:
Objeto obj = new int [10];
A matriz contém todos os métodos herdados do objeto (relação de herança de matrizes em Java), exceto clone (). Por que não há aula de matriz? Não há arquivo Array.java em Java. Uma explicação simples é que está oculto (Nota: as matrizes em Java são um pouco semelhantes aos tipos de dados básicos, eles são do tipo embutido e não há classe real correspondente a ele). Você pode pensar sobre essa pergunta - se houver uma aula de matriz, como seria? Ainda precisará de uma matriz para armazenar todos os elementos da matriz, certo? Portanto, não é uma boa ideia definir uma classe de matriz. (Nota do tradutor: aqui pode ser um pouco confuso, o motivo é um pouco semelhante a: o problema das galinhas nascendo com ovos e galinhas, e a metáfora pode não ser muito apropriada, por favor, entenda por você mesmo)
De fato, podemos obter a definição de classe da matriz, através do seguinte código:
int [] arr = new int [3]; system.out.println (arr.getclass ());
Saída:
classe [i
"Classe [i" representa a assinatura do tipo de tempo de execução do objeto de classe cujo tipo de membro é uma matriz de int "
Por que a string tem um método de comprimento ()?
A estrutura de dados por trás da string é uma matriz de char; portanto, não há necessidade de definir uma propriedade desnecessária (porque a propriedade já está fornecida no valor do char). Ao contrário de C, a matriz de char em Java não é igual a uma string, embora o mecanismo interno da string seja implementado por matrizes de char. (Nota: na linguagem C, não há classe de string, e as seqüências definidas geralmente usam a forma de char string[6] = "hollis"; )
Nota: Existem as seguintes maneiras de converter char [] em uma string:
char [] s = {'a', 'b', 'c'}; string string1 = s.toString (); string string2 = new String (s); string string3 = string.valueOf (s);Resumir
O acima é o conteúdo inteiro deste artigo. Espero que o conteúdo deste artigo seja útil para todos para aprender ou usar o Java. Se você tiver alguma dúvida, pode deixar uma mensagem para se comunicar.