Considere las siguientes preguntas antes de comenzar este artículo
¿Cómo obtener la longitud de una matriz sin usar ningún IDE con la función autocompletar? ¿Y cómo obtener la longitud de una cadena?
He preguntado a los programadores de diferentes niveles, incluidos los niveles junior e intermedio. Ninguno de ellos puede responder esta pregunta con precisión y con confianza (si puede responder esta pregunta con precisión y confianza, demuestra que usted es mejor en este conocimiento que la mayoría de los programadores intermedios). Dado que muchos IDES ahora tienen funciones de finalización de código, los desarrolladores pueden comprender muchos problemas de manera muy superficial.
La respuesta correcta a la pregunta anterior debe ser la siguiente:
int [] arr = new int [3]; system.out.println (arr.length); // use la longitud para obtener el grado de cadena de matriz str = "abc"; system.out.println (str.length ()); // use longitud () para obtener la longitud de la cadena
Entonces, la pregunta es, ¿por qué la matriz tiene un atributo de longitud pero la cadena no? O, ¿por qué las cadenas tienen length() , pero las matrices no?
¿Por qué la matriz tiene un atributo de longitud?
Primero, una matriz es un objeto de contenedor que contiene un número fijo de valores del mismo tipo. Una vez que se crea la matriz, su longitud es fija. La longitud de la matriz se puede usar como la longitud de la variable de instancia final. Por lo tanto, la longitud puede considerarse como un atributo de una matriz.
Hay dos formas de crear una matriz:
1. Cree una matriz a través de expresiones de matriz.
2. Cree una matriz inicializando los valores.
De cualquier manera, una vez que se crea la matriz, su tamaño es fijo.
El método de crear una matriz usando una expresión es el siguiente, que especifica el tipo de elemento, la dimensión de la matriz y la longitud de la matriz de al menos una dimensión.
Este método de declaración cumple con los requisitos porque especifica la longitud de una dimensión (la matriz tiene tipo int, la dimensión es 2 y la primera dimensión es 3)
int [] [] arr = new int [3] [];
Al crear una matriz utilizando la inicialización de la matriz, debe proporcionar todos los valores iniciales. El formulario es usar {y} para encerrar todos los valores iniciales juntos y separarlos.
int [] arr = {1,2,3};Nota:
Puede haber una pregunta aquí. Dado que el tamaño de la matriz se especifica cuando se inicializa, int[][] arr = new int[3][];定la matriz sin dar el tamaño de la segunda dimensión de la matriz. Entonces, ¿cómo se "define" la longitud de este ARR?
De hecho, la longitud de ARR es 3. De hecho, todas las matrices en Java, sin importar cuántas dimensiones, en realidad son matrices unidimensionales. Por ejemplo, ARR, se asignan 3 espacios, cada espacio almacena la dirección de una matriz unidimensional, que se convierte en una matriz "bidimensional". Pero para ARR, su longitud es 3.
int [] [] a = new int [3] []; system.out.println (a.length); // 3int [] [] b = nuevo int [3] [5]; system.out.println (b.length); // 3
¿Por qué no hay clase de matriz como cadena definida en Java?
Debido a que las matrices también son objetos, el siguiente código también es legal:
Object obj = new int [10];
La matriz contiene todos los métodos heredados del objeto (relación de herencia de matrices en Java), excepto clone (). ¿Por qué no hay clase de matriz? No hay archivo Array.java en Java. Una explicación simple es que está oculta (nota: las matrices en Java son un poco similares a los tipos de datos básicos, son un tipo integrado y no hay una clase real correspondiente a él). Puedes pensar en esta pregunta: si hay una clase de matriz, ¿cómo sería? Todavía necesitará una matriz para almacenar todos los elementos de la matriz, ¿verdad? Por lo tanto, no es una buena idea definir una clase de matriz. (Nota del traductor: aquí puede ser un poco confuso, la razón es un poco similar a: el problema de que los pollos nacen con huevos y pollos, y la metáfora puede no ser muy apropiada, por favor entiéndalo usted mismo)
De hecho, podemos obtener la definición de clase de la matriz, a través del siguiente código:
int [] arr = new int [3]; System.out.println (arr.getClass ());
Producción:
clase [yo
"Clase [I" representa la firma del tipo de tiempo de ejecución del objeto de clase cuyo tipo de miembro es una matriz de INT "
¿Por qué String tiene un método Longitud ()?
La estructura de datos detrás de la cadena es una matriz de char, por lo que no es necesario definir una propiedad innecesaria (porque la propiedad ya se proporciona en el valor de char). A diferencia de C, la matriz de char en Java no es igual a una cadena, aunque el mecanismo interno de la cadena es implementado mediante matrices de char. (Nota: En el lenguaje C, no hay clase de cadena, y la definición de cadenas generalmente usa la forma de char string[6] = "hollis"; )
Nota: Hay las siguientes formas de convertir char [] en una cadena:
char [] s = {'a', 'b', 'c'}; string string1 = s.ToString (); string string2 = new String (s); String String3 = String.ValueOf (S);Resumir
Lo anterior es todo el contenido de este artículo. Espero que el contenido de este artículo sea útil para todos en aprender o usar Java. Si tiene alguna pregunta, puede dejar un mensaje para comunicarse.