buscador

Visita

lunes, 11 de julio de 2016

📍Actividad 10: 👨‍💻 Creación y uso de matrices (arrays) en Java ☕️

Bienvenido al Blog, en esta oportunidad desarrollaremos un tema Teórico Practico sobre programación orientado a objetos, para entender sobre cómo desarrollar un sistema con el lenguaje java veremos acerca de  Creación 👨‍💻  y uso de matrices  en ☕️ Java.

 Sobre el contenido …

  •     El contenido de este blog tiene como fuente el curso Fundamentos de programación de Oracle.
  •      Con algunos agregados del autor "EL INFORMATICO IBERO"👷
Indice :

  • Creación de arrays unidimensionales
  • Establecimiento de valores de arrays utilizando el atributo length y un bucle
  • Uso del array args en el método main
  • Descripción de los arrays bidimensionales

Creación de arrays unidimensionales

Imagine un programa en el que almacene las edades de 10 personas. Podría crear variables diferentes para guardar cada uno de los 10 valores. Por ejemplo:

¿Pero, qué pasaría si tuviese que almacenar 1000 o 10000 edades? A medida que crece el número de valores, el programa se vuelve más y más difícil de manejar.

El lenguaje Java permite agrupar múltiples valores del mismo tipo (listas) utilizando arrays unidimensionales. Los arrays son útiles cuando se dispone de varios datos relacionados (como las edades de diferentes personas) pero no se quieren crear variables distintas para guardar cada dato.

En la figura siguiente se ilustran varios arrays unidimensionales.


Es posible crear un array de tipos primitivos, como int, o un array de referencias a tipos de objetos, como Shirt.

Cada parte del array es un elemento. Si declara un array de 100 tipos int, habrá 100 elementos.

Puede acceder a cada elemento concreto utilizando su ubicación o índice dentro del array.

Declaración de un array unidimensional

Los arrays se controlan mediante un objeto Array implícito (que no está disponible en el API de Java, pero está disponible en su código).

Como en el caso de cualquier otro objeto, debe:

  • Declarar una referencia al array
  • Instanciar un objeto Array
  • Inicializar ese objeto para poder utilizarlo.

La sintaxis utilizada para declarar matrices unidimensionales es como sigue:

Donde:

  • tipo representa el tipo de dato primitivo o el tipo de objeto correspondiente a los valores almacenados en el array.
  • Los corchetes, [], indican al compilador que se está declarando un array.
  • nombreArray es el nombre asignado al array.

Los corchetes de apertura y cierre también pueden aparecer después del identificador o nombre del array.

Utilice el código siguiente para declarar un array de valores char llamado status y un array de valores int llamado ages.

Utilice el código siguiente para declarar un array de referencias a Shirt llamado shirts y un array de referencias a String llamado names.

Cuando declara un array, el compilador y la máquina virtual de Java (JVM) no saben qué longitud tendrá porque ha declarado variables de referencia que en ese momento no señalan a ningún objeto.

Instanciación de un array unidimensional

Para poder inicializar un array, es preciso instanciar un objeto Array lo suficientemente grande como para dar cabida a todos los valores del array.

Un array se instancia definiendo el número de elementos que contiene. La sintaxis para instanciar objetos Array es como sigue:

Donde:

  • nombreArray es el nombre asignado al array.
  • tipo representa el tipo de dato primitivo o el tipo de objeto correspondiente a los valores almacenados en el array.
  • longitud representa el tamaño (número de elementos) del array.

Utilice el código siguiente para instanciar un array de valores char llamado status y un array de valores int llamado ages.

Utilice el código siguiente para instanciar un objeto Array llamado names que contiene referencias a String y un array de referencias al objeto Shirt llamado shirts.

Cuando se instancia un objeto Array cada elemento primitivo se inicializa con el valor cero correspondiente al tipo especificado.

En el caso del array de tipo char llamado status, cada elemento se inicializa con el valor \u0000 (el carácter vacío del juego de caracteres Unicode).

En el caso del array int llamado ages, el valor inicial de cada elemento es el valor entero 0.

En cuanto a los arrays names y shirt, las referencias al objeto se inicializan con null.

Los arrays de un determinado tipo de objeto pueden contener referencias de objeto.

Inicialización de un array unidimensional

Es posible escribir el contenido de un array después de crear el array.  La sintaxis para definir los valores de un array es:

Donde:

  • nombreArray es el nombre asignado al array.
  • índice representa el lugar del array donde se situará el valor.
  • valor es el valor que se asigna al índice en el array.

El primer elemento de un array se sitúa en el índice o posición 0 y el último elemento se sitúa en el lugar correspondiente al valor de longitud menos 1. Por tanto, el último elemento de un array de seis elementos es el índice 5.

Utilice el código siguiente para establecer los valores del array ages:

Utilice el código siguiente para establecer los valores del array shirts:

La palabra clave new se utiliza para crear los objetos Shirt y situar las referencias a dichos objetos en cada posición del array.

Declaración, instanciación e inicialización de arrays Unidimensionales

Si conoce los valores que va a incluir en el array en el momento de declararlo, puede declarar, instanciar y definir los valores del objeto Array en la misma línea de código. La sintaxis de esta declaración, instanciación e inicialización combinada de valores es como sigue:

Donde:

  • tipo representa el tipo de dato primitivo o el tipo de objeto correspondiente a los valores almacenados en el array.
  • Los corchetes, [], indican al compilador que se está declarando un array.
  • nombreArray es el nombre asignado al array.
  • {lista de valores o expresiones separados por coma} representa una lista de valores que se van a almacenar en el array o una lista de expresiones cuyos resultados se almacenarán en el array.

La sentencia siguiente combina los anteriores ejemplos de declaración, instanciación e inicialización del array ages:

También se pueden establecer valores para cada objeto (con una referencia que se almacena en un array) utilizando el constructor de cada objeto. La sentencia siguiente combina el anterior ejemplo de declaración, instanciación e inicialización del array shirt:

No es posible declarar e inicializar un array en líneas diferentes utilizando la lista de valores separados por coma. El código siguiente devolvería un error:

Acceso a un valor dentro de un Array

El acceso a cada elemento de un array se realiza a través de su índice. Para acceder a un valor del array, indique el nombre del array y el número de índice del elemento (entre corchetes []) a la derecha de un operador de asignación.

En el siguiente ejemplo de código se muestra cómo establecer el valor de un determinado índice del array:

En el ejemplo siguiente se muestra cómo recuperar valores de un determinado índice del array:

Almacenamiento de arrays unidimensionales en la memoria

Los arrays son objetos a los que hace referencia una variable de referencia a objetos.

En la figura siguiente se ilustra la forma en que se almacena en la memoria un array de tipos de datos primitivos frente a la forma en que se almacena un tipo primitivo.


La línea de código de la figura aparecería en algún método como, por ejemplo, main.

El valor de la variable size (un tipo primitivo char) es L. El valor de sizes[] es 0x334009 y señala a un objeto del tipo “array de valores char” compuesto de tres valores. El valor de sizes[0] es char S, el valor de sizes[1] es char M y el valor de sizes[2] es char L.

Almacenamiento de variables de referencia y arrays de referencias en la memoria

En la figura siguiente se muestra cómo se guarda un array de referencias en la memoria.

El valor de la referencia al objeto myShirt es x99f311, que es una dirección que señala a un objeto de tipo Shirt con los valores 0, 0.0 y U.

El valor de la referencia al objeto shirts[] es x179009, una dirección que señala a un objeto de tipo “array de referencias a objetos Shirt” formado por tres referencias a objetos:

  • El valor del índice shirts[0] es 0x00099, es decir, una referencia que señala a un objeto de tipo Shirt con los valores 0, 0 y U.
  • El valor del índice shirts[1] es 0x00327, es decir, una referencia que señala a un objeto de tipo Shirt con los valores 0, 0 y U.
  • El valor del índice shirts[2] es 0x00990, es decir, una referencia que señala a un objeto de tipo Shirt con los valores 0, 0 y U.

Establecimiento de valores de arrays utilizando el atributo length y un bucle

Establecer los valores de los arrays es una tarea tediosa porque es preciso escribir una línea de código para definir cada elemento del array.

Sin embargo, es posible usar un bucle para ir recorriendo cada elemento del array y establecer los distintos valores.

Atributo length

Todos los objetos Array tienen una variable de atributo llamada length que contiene la longitud del array.

La longitud se conoce también como los límites del array. Los límites de un array como ages[10] van de ages[0] a ages[9] porque todos los arrays empiezan con el elemento cero (0).

El número de elementos de un array se almacenan como parte del objeto array. El software de la máquina virtual de Java utiliza la longitud para asegurarse de que cada acceso al array se  corresponda con un elemento actual del array.

Si se produce un intento de acceder a un elemento que no existe, por ejemplo, especificando en el código un valor ages[21] para un array ages que tiene longitud [10], se producirá un error.

Establecimiento de los valores del array utilizando un Bucle

Es posible usar el atributo length de la clase Array en la parte condicional de un bucle para iterar en un array. En el ejemplo siguiente se ilustra la forma de iterar a lo largo de un array utilizando un bucle.

Ejejmplo:



En este ejemplo, cada índice de myArray se llena con un valor equivalente al número de índice (count). Por ejemplo, myArray[10] es 10, myArray[99] es 99 y así sucesivamente.

Bucle while mejorado

Existe otra forma de la sentencia “for” diseñada para iterar en los arrays. A veces esta forma se conoce como sentencia for mejorada y puede utilizarse para hacer los bucles más compactos y fáciles de leer. Observe el array siguiente, que está formado por una serie de números:

El programa siguiente utiliza la sentencia for mejorada para ir recorriendo el array incluido en el bucle y mostrar la suma de los números que contiene.

Se recomienda usar esta forma de sentencia for siempre que sea posible.

Uso del array args en el método main

Ya hemos visto un ejemplo de uso de un array como argumento del método main. El array args acepta un número indeterminado de objetos String:

Cuando se pasan secuencias o cadenas de caracteres a un programa desde la línea de comandos, esas secuencias se escriben en el array args. Para utilizarlas, es preciso extraerlas del array args y, opcionalmente, convertirlas en el tipo de dato apropiado.

El siguiente ejemplo de código ilustra el paso de secuencias de caracteres al método main de un programa.

La clase ArgsTest extrae dos argumentos String pasados desde la línea de comandos y los muestra en la pantalla.

Sus programas deberían mostrar una lista de argumentos válidos a cualquier usuario que los utilice. La mayoría de los programas utilizados desde la línea de comandos presenta una lista de argumentos aceptados si:

  • Se introduce el nombre del programa sin ningún argumento.
  • Se introduce el nombre del programa con un argumento no válido.
  • Se introduce explícitamente un argumento que indique al programa que debe mostrar una lista de argumentos aceptados (tal como la -h de ayuda).

Conversión de argumentos String en otros tipos

El método main trata todo lo que se escribe como una secuencia literal.  Si quiere utilizar la representación literal de un número en una expresión, debe convertir la secuencia en el valor numérico equivalente. Cada tipo de dato tiene una clase asociada que contiene métodos utilitarios static para convertir las secuencias literales en ese tipo de dato (clase Integer para int, clase Byte para byte, clase Long para long y así sucesivamente).

Por ejemplo, para convertir el primer argumento pasado al método main en un tipo int:

Función varargs

La función varargs (argumentos variables) permite crear un método que pueda aceptar un número variable de argumentos. Imagine el ejemplo siguiente:

En primer lugar, el argumento lista del método mostrarMensajes está definido como un tipo String... La declaración del parámetro contiene puntos suspensivos. Esto indica al compilador que el código de llamada puede pasar un número variable de parámetros String. De esta forma, es posible compilar y ejecutar el programa anterior, por ejemplo:

En general, un método puede tener como máximo un parámetro que sea un argumento variable (vararg), debe ser el último parámetro recibido por el método y se expresa mediante el tipo de objeto, los puntos suspensivos (... ) y el nombre de la variable.

Descripción de los arrays bidimensionales

Es posible almacenar también matrices de datos utilizando arrays multidimensionales (arrays de arrays). Un array bidimensional (un array de arrays) es parecido a una hoja de cálculo con múltiples columnas (cada columna representa un array o una lista de elementos) y múltiples filas.

En la figura siguiente se ilustra un array bidimensional.

Declaración de un array bidimensional

Los arrays bidimensionales necesitan un segundo par de corchetes en la declaración. Por lo demás, el proceso de crear y usar arrays bidimensionales es similar al de los arrays unidimensionales. La sintaxis para declarar un array bidimensional es como sigue:

Donde:

  • tipo representa el tipo de dato primitivo o el tipo de objeto correspondiente a los valores almacenados en el array.
  • Los corchetes, [] [], indican al compilador que se está declarando un array bidimensional
  • nombreArray es el nombre asignado al array durante la declaración.

En el ejemplo siguiente se declara un array de arrays para conocer las ventas trimestrales durante cinco años.

Instanciación de un array bidimensional

La sintaxis para instanciar un array bidimensional es como sigue:

Donde:

  • nombreArray es el nombre asignado al array durante la declaración.
  • número_de_arrays es el número de arrays contenidos en el array.
  • longitud es la longitud de cada array dentro del array.

En el ejemplo siguiente se instancia un array de arrays para obtener las ventas trimestrales durante cinco años.

Este array bidimensional crea una matriz como ésta:

El array ventasAnuales contiene cinco arrays de tipo int (cinco subarrays). Cada subarray tiene un tamaño de cuatro elementos y hace el seguimiento de las ventas durante los cuatro trimestres de un año.

Inicialización de un array bidimensional

Al establecer los valores de un array bidimensional, indique el valor de índice utilizando un número para representar la fila seguido de otro número que represente la columna. He aquí algunos ejemplos de cómo establecer los valores del array ventasAnuales:

El ejemplo de código anterior da lugar a la siguiente matriz o array bidimensional:

No hay comentarios.:

Publicar un comentario

Raul Tamani A. ©. Imágenes del tema de fpm. Con tecnología de Blogger.

Adblock Detectado

Apoya este sitio desactivando el Adblock para seguir navegando. ¡Gracias!

¡Ya Desactive el Adblock!