Está en la página 1de 4

UnidadDidactica4:

LosArrays

Un``Array''esunalistadeelementosdelmismotipo(homognea),cadaunoellosidentificado
porunndice.
SepuedeaccederaloselementosdelArray(paraguardarorecuperarlainformacin)encualquier
orden.
ElArrayquedadefinidopor
eltipobsicodeelementosqueaglutina,
elnmerodeelementos(longitud).

Eslaestructuradedatosqueseusamsfrecuentementeenprogramacin.
LagestindeinformacinconelArrayeseficiente.Dehecho,lamemoriadelordenadorse
gestionacomounArrayenloslenguajesdebajonivel.
LosArraysseutilizancontantafrecuenciaquetodosloslenguajesdeprogramacinofrecenalgn
modoparautilizarlosconfacilidad.

ArraysenJava

EnJava,losArraypuedenserdecualquiertipodedato,incluidosobjetos.
EltipodedatoArrayes,asuvez,unobjeto.
LasvariablesdeltipoArraysedeclaranutilizando[],delsiguientemodo:
tipo_basico[]

Porejemplo,
int[]

nombre_variable

fila;

declaralavariablefiladeltipoArraydedatosdeltipoint.
Estasvariablesalmacenarnlareferenciaalobjeto.
Paracrearelobjeto,seutilizaeloperadornewdelaforma:
new tipo_basico[numero_de_elementos]

Porejemplo,

fila = new int[100];

creaelobjetoquepuedealmacenar100enteros.
Sepuededeclararlavariableycrearelobjetoenlamismainstruccin:
int[] fila = new int[100];

AcadaunodeloselementosdelArrayseaccedeconelnombreseguidodelndiceentre
corchetes.Elndicevaraentre0y
almacenar.As,

,siendo elnmerodeelementosquepuede

fila[99] = 1763;

almacenaelvalor1763enlaltimaposicindelArrayfila.
Cadaunodeloscomponentessepuedeutilizarcomounavariablecualquieradeltipodedato
bsicoquealmacena.
Porejemplo,elArrayfilaofrecela100variablesdeltipoint:
fila[0], fila[1], ... ,fila[98], fila[99]

ElobjetoArrayincluyeunavariablequeeslalongitudyquetieneelnombrelength.La
variableespblicaysepuedeaccederaelladirectamentecomouncampodelobjeto.
Enelejemplodefila,esteprogramaimprime100:
public class p2t2p1{
public static void main(String[] args)
{ int[] fila = new int[100];
int cuantos = fila.length;
System.out.println(cuantos);}}

ObjetosArray

Lavariablelength esdeltipofinal,seasignaenlacreacindelobjetoynosepuede
modificarposteriormente.
Cuandosecreaelobjeto,todosloselementostomanunvalorinicial.Sisetratadetiposbsicos
tomanelvalorcero,sisonnmerosocaracteres,oelvalorfalsesisondeltipoboolean.Si
setratadereferenciasaobjetos,elvalorpordefectoesnull.
LosArrayssepuedencreareinicializaralmismotiempo.Paraello,seutilizanlosvaloresentre
llavesconelformato
tipo_dato[] variable = { v1 , v2 , v3 , . . . , vN};

donde
sonlos valoresqueseasignanalasposiciones
Array.
Porejemplo,conlainstruccin:

del

double[] primos20 = {2.,3. 5.,7.,11., 13.,17.,19.};

secreaelobjetoprimos20comounArrayde8datosdeltipodouble.Enlacreacindel
objeto,primos20.lengthseinicializaconelvalor8,yyanopuedemodificarse.Elrestode
losvaloressiquesepuedenmodificar,yaqueprimos20[0],...,primos20[7]son8variables
deltipodouble.
Lasalidadelprograma:
public class p2t2p4{
public static void main(String[] args){
double[] primos20 = {2.,3.,5.,7.,11.,13.,17.,19.};
for(int i = 0;i<primos20.length;i++) {primos20[i]-=1;
System.out.print(primos20[i] +" "); }
}}

ser:1.0 2.0 4.0 6.0 10.0 12.0 16.0 18.0

Arraysbidimensionales

Tambinsepuedeorganizarlainformacinentablasdedosdimensiones,condosndicespara
accederaloselementos.
Conlainstruccin:
int[][]

mat = new int[10][10]

secreaunamatrizcapazdealmacenar100elementosdeltipointyaellosseaccedeconlas

variablesmat[i][j].
Sepuedencreartablasdecualquierdimensin,perohayquellevarcuidadoensuuso,yaquela
memoriaqueutilizancrecemuyrpidamente.Porejemplo,lamatriz
int[][][]

mat3 = new int[100][100][100]

utilizarmsde4Mbytesdememoriaparaalmacenarelmillndeenteros.
UnArraybidimensionaleslaestructuradedatosadecuadaparaalmacenarlainformacindela
matricesqueseutilizanenlgebra.LosArraystridimensionales,sonlosapropiadospara
almacenarinformacindetensores.
Ilustramossuusoconelprogramasiguiente
public class p2t2p6{
public static void main(String[] args){
int[][] mat = new int[3][5];
for(int i=0;i<mat.length;i++)
for (int j=0;j<mat[i].length;j++)
mat[i][j] = (i+1)*10 + (j+1);
for(int i= 0;i<mat.length;i++) {
for (int j=0;j<mat[i].length;j++)
System.out.print(mat[i][j]+ " ");
System.out.println();}
}}

queproducelasalida:
11
21
31

12
22
32

13
23
33

14
24
34

15
25
35

Elnmerodefilasestalmacenadoenmat.lengthyelnmerodecolumnasdelafila est
almacenadaenmat[k].length