2010-02-15 29 views
12

Las matrices se implementan como objetos en Java, ¿verdad? De ser así, ¿dónde podría ver el código fuente de la clase de matriz? Me pregunto si la variable de longitud en matrices se define como una constante y si es así, por qué no está en letras mayúsculas LONGITUD para hacer que el código sea más comprensible.¿Cómo se implementan las matrices en Java?

+4

Si era una constante (como en un campo static final), todas las matrices tendrían que tener el mismo tamaño (o matrices de diferentes tamaños tendrían que tener diferentes tipos (lo que implicaría además que el tamaño de una matriz debería conocerse en tiempo de compilación)). – sepp2k

+0

Según lo que entiendo de la respuesta de Yishai a continuación, es que la matriz se crea dinámicamente cuando se define. – AFK

+0

punto de sepp2k es que no hay un campo de longitud global. En general, pensamos en las variables en mayúsculas como pública estática y final. Aquí la longitud es pública y final, pero no estática, y su valor es diferente por instancia de objeto, aunque nunca cambia. – Yishai

Respuesta

13

Aunque las matrices son objetos en el sentido de que heredan java.lang.Object, las clases se crean dinámicamente como una característica especial del idioma. No están definidos en el código fuente.

considerar esta matriz:

MySpecialCustomObject[] array; 

no hay código fuente para eso. Lo creó en código de forma dinámica.

La razón por la que la longitud está en minúsculas y un campo se trata realmente del hecho de que los estándares posteriores de codificación Java no existían en el momento en que esto se desarrolló. Si una matriz se estuviera desarrollando hoy, probablemente sería un método: getLength().

La longitud es un campo final definido en la construcción del objeto, no es una constante, por lo que algunos estándares de codificación no querrían que estuviese en mayúsculas. Sin embargo, en general, en Java, actualmente, todo se hace generalmente como una constante en mayúsculas o marcado como privado con un método getter público, incluso si es definitivo.

+0

¿Cuál es el esquema general para generar una clase de matriz? – AFK

+2

@ sn3twork, Básicamente array tiene todos los métodos de objeto, más una variable de longitud final pública y tiene un método de clonación pública, implementa Cloneable y Serializable (pero supongo que por razones heredadas no Iterable). Los detalles están en el JLS: http://java.sun.com/docs/books/jls/second_edition/html/arrays.doc.html – Yishai

+0

gracias por el enlace http://java.sun.com/docs/books/ jls/second_edition/html/arrays.doc.html # 11358 Encontré donde se habla sobre la definición de matrices utilizando inicializadores de matrices y expresiones de creación – AFK

-1

Podemos decir que una matriz es un contenedor que contiene una longitud fija de datos de un solo tipo de datos. por ej.

int[] MyArray = new int[101]; // allocates memory for 101 integers, Range from 0 to 100. 

y Multidimensional

String[][] names = {{"FirstName", "LastName"},{"Kaji", "Islam"},...}; 

y para la matriz de caracteres

char[] ch={'a','b'....}; 
Cuestiones relacionadas