Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Curso 2020-2021
Contenidos
O equivalentemente:
Tipo_de_los_elementos nombre_de_referencia_al_array [];
Ejemplos:
int [] arrayDeEnteros; int arrayDeEnteros [];
char [] arrayDeCaracteres; char arrayDeCaracteres [];
1
2
¿Pero cuánto valen los enteros del array referenciado por serie?
Dos posibilidades:
→ O bien valen 0 (si serie ha sido declarada a nivel de clase).
→ O bien su valor es indefinido (si serie ha sido declarada dentro de un
método).
Inicialización de arrays en Java (II)
Valores iniciales por defecto: Cuando un array se declara como variable de
instancia, al crearlo sus elementos se inicializan de forma automática a:
seri e1
1 serie2
2
3
4
Un array se puede asignar a otro array (si son del mismo tipo):
int a[];
int b[]=new int[]{3,4,5,6,7,8};
a=b;
A diferencia de lo que podríamos intuir, lo que ocurre en el código anterior es que tanto a como b hacen
referencia al mismo array. Es decir el resultado seria:
Esta asignación provoca que cualquier cambio en a también cambie el array b (ya que, de hecho, es el
mismo array). Ejemplo:
int a[] ={3,3,3};
int b[];
b= a;
b[0]=8;
System.out.println(a[o]);//Escribirá el numero 8
Finalmente, como detalle final a este tema, el operador de igualdad (==) se puede utilizar con arrays,
pero nuevamente no compara el contenido sino si las referencias señalan al mismo array. Es decir:
Int a[]={3,3,3};
int b[] ={3,3,3};
System.out.println(a==b); //escribe false, aunque ambos arrays tienen el mismo contenido
int c[]=b;
System.out.println(b==c); //escribe true
Uso de arrays: Indexación de elementos (I)
Nos podemos referir a cualquier elemento del array mediante el nombre del
array seguido de la posición del elemento entre corchetes.
El número de posición se denomina subíndice.
Java define el atributo length que guarda el número de elementos del array y
que se consulta según la sintaxis:
nom bre_arr ay.leng th
Ejemplo:
int serie[] = new int[10];
serie.length // nos devuelve el valor 10
// suma elementos
for ( int i= 0; i < s.length; i ++) total += s[i];
}
} // Fin de ejem plo 1
Ejemplo 2: Análisis de un sondeo.
Se ha realizado una encuesta a 20 personas acerca de la calidad de la comida de un
restaurante en una escala de 1 a 10. Se trata de colocar las 20 respuestas en un array de
enteros y resumir los resultados del sondeo.
class Sondeo{
int rreessppuueessttaass[[ ] = {1, 2, 6, 4, 8, 5, 9, 7, 8, 1100,,
1, 6, 3, 8, 6, 10,3, 8, 2, 7};
int frecuencia[ ];
public static void main(String args[]){
frecuencia = new int[11];
// No uuttiilliizzaammooss el pprriimmeerr eelleemmeennttoo.. CCaaddaa rreessppuueessttaa es
// el subíndice del array frecuencia.
for ( int i = 0; i < respuestas.length; i++)
++frecuencia[respuestas[i]];
}
} // Fin de Sondeo
Los resultados son correctos porque el frecuencia se inicializó aauuttoom
mááttiiccaam
meennttee a 0.
Observaciones
• La palabra array se ha traducido de muchas maneras, sin que ninguna de
ellas haya cuajado por completo. Podemos encontrar en español: arreglos,
formaciones, matrices, vectores.
• Los arrays son objetos y por tanto accedemos a ellos usando referencias.
→ Sin embargo, no existe una clase array ni métodos asociados a los
arrays. Los arrays son una construcción del lenguaje.
Algoritmo de la burbuja:
En el array compara en cada pasada a[0] con a[1] , a[1] con a[2] ,
a[2] con a[3] y así sucesivamente.
Ordenación de arrays: Algoritmo de la burbuja.
// Definido como variable de instancia
int [] a = new int [TamañoArray];
// Suponemos que está inicializado
public static void main(String args[] ) {
int intercambio;
for (int pasadas = 0; pasadas < a.length-1; pasadas++ )
for (int i = 0 ; i < a.length- 1- pasadas; i++)
if (a[i] > a[i+1]){
intercambio = a[i];
a[i] = a[i+1];
a[i+1] = intercambio;
}
}
Ordenación de arrays: Algoritmo de la burbuja.
Subíndice 0 1 2 3 4 5 6 7 8 9 10
Valor 2 4 6 8 10 12 14 16 18 20 22
2
4
6
8
10
12
14 14
16 16
18 18
20 20 20 20
22 22 22
Búsqueda en arrays: Búsqueda binaria
class Búsqueda_Binaria {
int a[ ] = {2, 4, 6, 8, 10, 12, 14, 1 6, 18, 20, 22}
}
Arrays Multidimensionales en Java
Java no maneja directamente arrays de múltiples subíndices, pero
como los elementos de un array pueden ser cualquier cosa →
• Lo que estamos declarando es un array cuyos elementos son dos arrays, uno
conteniendo dos elementos {1,2} y el otro conteniendo tres elementos {3,4,5}.
Arrays Bidimensionales (III)
int [][] matriz = { {11,12,13}, {21,22,23} };
System.out.println(matriz [[00]][[22]]));; // Imprime en pantalla 13
tri angulo[1] → 0 1
triangulo[0][0] = 0;
Tri angulo[2] → 0 1 2
triangulo[1][0] = 0;
triangulo[1][1] = 1;
triangulo[2][0] = 0;
triangulo[2][1] = 1;
triangulo[2][2] = 2; O bien,
int [ ][ ] array={{1,2,3},{4,5,6}};
for (int [ ] a : array){
for (int b:a)
System.out.println (b+"\t");
System.out.println ();
La clase Arrays
En el paquete java.utils se encuentra una clase estática llamada Arrays. Una clase estática permite ser
utilizada como si fuera un objeto(como ocurre con Math), es decir que para utilizar sus métodos hay que
utilizar simplemente esta sintaxis:
Arrays.metodo(argumentos);
fill
Permite rellenar todo un array unidimensional con un determinado valor. Sus argumentos son el array a
rellenar y el valor deseado:
int a[]=new int[23];
Arrays.fill(valores,-i);//Todo el array vale -1
También permite decidir desde que índice hasta que índice rellenamos:
Arrays.fill(valores,5,8,-i); //Del elemento 5 al 7 valdrán -1
Equals
Compara dos arrays y devuelve true si son iguales. Se consideran iguales si son del mismo tipo, tamaño
y contienen los mismos valores. A diferencia del operador de igualdad (==), este operador si compara el
contenido. Ejemplo (comparación entre el operador de igualdad y el metodo equals):
int x[]={4,5,2,3,7,8,2,3,9,5};
Arrays.sort(x,2,5); //El array queda {4 5 2 3 7 8 2 3 9 5}
Arrays.sort(x); //Estará completamente ordenado
Nos podemos encontrar varios métodos que nos permitirá ordenar arrays de distintos tipos de datos, ya
sean enteros, cadenas, objetos....
Vamos a ver un ejemplo de ordenación de un vector de cadena, primero lo veremos ordenado
ascendente y luego descendente.
Si ahora le aplicamos el método sort de la clase que hemos indicado, el array saldrá ordenado de forma
ascendente. El código sería el siguiente:
//Ordenación ascendente
Arrays.sort (stringArray);
Si lo queremos ordenar de forma descendente, habría que indicarle al método que lo haga así. Para
este caso, el método quedaría de la siguiente forma:
//Ordenación descendente
Otra opción que nos permite el método “sort” es una ordenación selectiva, es decir, de un array,
ordenar los elementos que le indiquemos en un rango dado. Es decir, el método en este caso sería de la
siguiente forma:
int x[]={1,2,3,4,5,6,7,8,9,10,11,12};
Arrays.sort(x);
System.out.println(Arrays.binarySearch(x,8)); //Escribe: 7
copyOf
Disponible desde la versión 1.6 del SDK, obtiene una copia de un array. Recibe dos parámetros: el
primero es el array a copiar y el segundo el tamaño que tendrá el array resultante. De modo que si el
tamaño es menor que el del array original, solo obtiene copia de los primeros elementos(tantos como
indique el tamaño); si el tamaño es mayor que el original, devuelve un array en el que los elementos que
superan al original se rellenan con ceros o con datos de tipo null (dependiendo del tipo de datos del
array).
Funciona como la anterior (también esta disponible desde la versión 1.6),solo que indica con dos
números de que elemento a que elemento se hace la copia:
El metodo System.arraysCopy
La clase System también posee un metodo relacionado con los arrays, dicho método permite copiar un
array en otro. Recibe cinco argumentos: el array que se copia, el índice desde que se empieza a copia
en el origen, el array destino de la copia, el índice desde el que se copia en el destino, y el tamaño de la
copia (numero de elementos de la copia).
int uno[]={1,1,2};
int dos[]={3,3,3,3,3,3,3,3,3};
System.arraycopy(uno, 0, dos, 0, uno.length);
for (int i=0;i<=8;i++){
System.out.print(dos[i]+" ");
} //Sale 1 1 2 3 3 3 3 3 3
La ventaja sobre el método copyOf de la clase Arrays esta en que este método funciona en cualquier
versión de Java.