Está en la página 1de 29

Arreglos en Java

Programacin Orientada a Objetos

Arreglos

Un arreglo es una secuencia de datos del mismo tipo Los datos se llaman elementos del arreglo y se numeran 0, 1, 2, ... Estos nmeros localizan al elemento dentro del arreglo y se denominan ndices En Java, los ndices del arreglo empiezan con 0 y terminan con el tamao del arreglo -1 Si el arreglo tiene n elementos, se denotan como a[0], a[1], ... a[n-1]

Declaracin de un arreglo

La sintaxis de declaracin de arreglos en Java es


Ejemplos: char cad[], p; int [] v, w; double [] m, t[], x; En la declaracin del arreglo no se permite indicar el nmero de elementos, as, int numeros[12] es erroneo

tipo [] identificador tipo identificador []

Definir arreglo de nmero de elementos

Sintaxis para definir arreglo de un nmero determinado de elementos: Ejemplo: float notas = new float [26]; int [] a; a = new int[10]

tipo nombreArreglo[] = new tipo [numeroDeElementos] tipo nombreArreglo[]; nombreArreglo = new tipo[numeroDeElementos];

Tamao del arreglo


Java considera cada arreglo como un objeto El nmero de elementos de un arreglo se conoce accediendo al campo length double [] v = new double [15] System.out.print(v.length); // escribe 15 El campo length est protegido, no se puede modificar

Ejemplo, mtodo con un argumento arreglo, devuelve la suma de elementos


1.double suma (double [] w) 2.{ 3. double s = 0.0; 4. for (int i=0; i < w.length; i++) 5. s += w[i]; 6. return s; 7.}

Inicializacin de arreglos

Se deben asignar valores a los arreglos antes de utilizarlos, por defecto se inicializan con 0
precios[0] = 10; precios[1] = 20; precios[2] = 30;

int numeros[]={10, 20, 30, 40, 50, 60}; char c[]={'L','u','i','s'}; final int ENE=31, FEB=28, MAR=31,ABR=30; int meses[]={ENE, FEB, MAR, ABR}; for(i=0; i<numeros.length; i++) numeros[i] = -1;

Arreglos de caracteres y cadenas de texto


Una cadena de texto es un conjunto de caracteres, 'abcdefg'. Son soportadas por la clase String: String cadena = 'abcdefg' Los arreglos tipo char son secuencias de carcateres, con caractersticas de arreglos de otros tipos String mas = programador Java;

char datos[] = {'D','i','r','e','c','t','o','r','i','o'};

Copia de arreglos

final int N = 12;

int v1[]= new int[N], v2[]=new int[N];

for(int i=0;i<N; i++)

v1[i]=(int)Math.random()*199+1;

//elementos de v1 copiados a v2 for(int i=0;i<N;i++) v2[i] = v1[i];

Arreglos multidimensionales

Los arreglos vistos son unidimensionales, se conocen tambin como listas (vectores) Los arreglos multidimensionales tiene ms de una dimensin. Los de dos dimensiones, se llaman tablas o matrices Sintaxis:
<tipo datoelemento> <nombreArreglo>[][] <tipo datoelemento> [][] <nombreArreglo> char pantalla[][]; pantalla = new int[10][5];

Arreglo bidimensional

Es un arreglo de arreglos, es decir, un arreglo unidimensional donde cada elemento es un arreglo Arreglo de 4 renglones y 2 columnas: int tabla[][]=new int[4][2]; si cada entero ocupa 4 bytes:
Elemento
Tabla[0][0] Tabla[0][1] Tabla[1][0] Tabla[1][1] Tabla[2][0] Tabla[2][1] Tabla[3][0] Tabla[3][1]

Posicin relativa en memoria


0 4 8 12 16 20 24 28

Inicializacin de arreglos multidimensionales



int tabla[][]={{51,52,53},{54,55,56}}; int tabla[][]={{51,52,53}, {54,55,56}};


double tb[][]={{1.5,-2.5},{5.0,-0.0,1.5}};

int []a={1,3,5}, b={2,4,6,8,10}; int mtb[][]={a, b}; double [][]gr=new double[3][]; gr[0]=new double[3]; gr[1]=new double[6]; gr[2]=new double[5];

Atributo length de una tabla

En un arreglo bidimensional tabla, length de tabla contiene el nmero de renglones, y length de cada rengln contiene el nmero de columnas
float ventas[][]={{0.,0.,0.},{1.0,1.0},{-1.0}};

System.out.print(ventas.length); //escribe 3
System.out.print(ventas[0].length); //escribe 3 System.out.print(ventas[1].length); //escribe 2 System.out.print(ventas[2].length); //escribe 1

Acceso a elementos de arreglos bidimensionales

nombreArreglo[renglon][columna] = valor;
variable = nombreArreglo[renglon][columna]; Tabla[2][3]=4.5; Resistencias[2][4]=50; Ventas = Tabla[1][1]; Dia = Semana[3][6]; for(ren=0; ren < Matriz.length; ++ren) for(col=0; col<Matriz[ren].length; ++col) Procesar elemento Matriz[ren][col];

Lectura y visualizacin
import input.Keyboard; class Tabla { public static void main(String[] a){ int[][]=new int[3][5]; leer(a); visualizar(a); } static void leer(int b[][]){ Int i,j; System.out.println(Mete datos a matriz); for(i=0;i<b.length; i++){ System.out.println(Rengln: +i); for(j=0;j<b[i].length; j++) b[i][j]=Keyboard.readInt(); } }

Lectura y visualizacin ...


static void visualizar(int b[][]){ int i,j; System.out.println(\n\t Matriz leida ); for(i=0; i < b.length; i++){ for(j=0; j < b[i].length; j++) System.out.print(b[i][j]+ ); System.out.println( ); } } leida 10 40 15 26 16 27

} Mete datos a matriz Rengln 0: Matriz 45 45 75 25 75 20 14 36 25 21 15 37 10 40

Arreglos de ms de dos dimensiones

Java proporciona la posibilidad de almacenar varias dimensiones, por ejemplo un arreglo de tres dimensiones Un arreglo tridimensional:
int volumen[][][]=new[181][178][190];
Y Z

System.arraycopy

arraycopy(Object src, int srcPos, Object dest, int destpos, int length) Copia un arreglo desde el arreglo fuente especificado, empezando en la posicin especificada, hasta la posicin especificada del arreglo destino El nmero de componentes copiados es igual al argumento length. Los componentes en las posiciones srcPos hasta srcPos+length-1 en el arreglo fuente se copian en las posiciones destPos hasta destPos+length-1, respectivamente, del arreglo destino.

Ejemplo, borrar elemento de arreglo


1.public class arregloPrueba 2.{ 3. public static int[] remover(int _i, int[] _a) 4. { 5. int[] b = new int[_a.length-1]; 6. System.arraycopy( _a, 0, b, 0, _i ); 7. System.arraycopy( _a, _i+1, b, _i, b.length-_i ); 8. return b; 9. } 10. 11. public static void main(String[] args) 12. { 13. int[] a = {1, 2, 3, 4, 5}; 14. // remover elemento 3 15. int[] b = remover(3, a); 16. 17. for( int i=0; i<b.length; i++ ) { 18. System.out.println( b[i] ); 19. } 20. }

Ejemplo de remover en arreglo


1.int[] a = new int[10]; 2.int[] b = new int[9]; 3. 4.int i = 0; 5.int j = 0; 6.int borrarElemento = 5; 7.while (i < a.length && j < b.length) { 8. if (i == borrarElemento) { 9. i++; 10. } 11. else { 12. b[j] = a[i]; 13. i++; 14. j++; 15. } 16.} 17.// en este punto, b = a sin el 5 elemento

Variables y su alcance

El alcance de variables es la regin de un programa dentro del cual la variable puede ser invocada a travs de su nombre. El alcance tambin determina el tiempo en que el programa aparta memoria o la libera para la variable. El alcance es diferente a la visibilidad

La visibilidad est relacionada a las variables consideradas como atributos y determina si la variable puede ser utilizada fuera de la clase dentro de la cual es declarada.

Variables y su alcance

La localizacin de la declaracin de una variable dentro de un programa define su alcance. La declaracin puede considerarse como:

Variables miembro (atributos de la clase) Variables locales Parmetros de mtodos Parmetros de manejo de excepciones

Variables y su alcance
public class Prueba{ private <variable miembro (atributo)> public void metodo( <parmetros de mtodo>) { ........... < variables locales > catch (<parmetros de excepcin >{ ..................... ..................... } ............ ............
Alcance de variables miembro (atributos) Alcance de parmetros de mtodos Alcance de variables locales Alcance de parmetros de manejo de excepciones

} }

Variables miembro (atributos de la clase)

Son miembros de una clase y a su vez de objetos instanciados de ella. Son declaradas dentro de la clase pero fuera de algn mtodo o constructor. Su alcance es la declaracin de la clase completa. Su declaracin necesita aparecer antes de que sea utilizada. Se recomienda declarar todas al inicio de la clase.

Variables Locales

Son declaradas dentro de un bloque de cdigo {.......} El alcance de una variable local se extiende desde su declaracin hasta el fin del bloque donde fue declarada. Por ejemplo, todas las variables declaradas dentro del mtodo main () de alguna clase son variables locales.

Parmetros de mtodos

Son parmetros formales para mtodos o constructores. El alcance del parmetro es el mtodo o constructor completo al cual pertenece.

Parmetros de manejo de excepciones

Son semejantes a los parmetros de mtodos. En este caso, son argumentos a un manejador de excepciones. Su alcance es desde el inicio hasta el final del bloque correspondiente a la palabra reservada catch {......}

Ejemplo
if (...) { int i = 17; ... } System.out.println("El valor de es: i = " + i);

// error

La ltima lnea no compila porque la variable local i se encuentra fuera de su alcance. El alcance est entre los corchetes {...} La variable i deja de existir despus del corchete de cierre }. Para evitar el error, la declaracin de i debe moverse fuera del if o la del println() dentro del if

Visibilidad: niveles de acceso


Modificador private protected public package

clase X X X X

subclase X* X

paquete X X X

El mundo

Si un miembro de la clase no tiene modificador, su nivel de acceso de default es paquete package

También podría gustarte