Almacenamiento y proceso de valores múltiples.La declaración de una matriz se hace declarando su tipo (basado en el tipo de sus elementos) y su nombre. No existen los matrices genéricos. Ejemplo:
Esta declaración no reserva memoria para los elementos de la matriz.int[] matrizDeEnteros;Al instanciar la matriz con el operador
new
se reserva memoria para los elementos de la matriz, que ya están listos para ser inicializados. Por ejemplo:En general:int[] matrizDeEnteros= new int[10];El acceso a los elementos de una matriz se hace a través de un índice que va de cero a la longitud de la matriz menos uno.tipoElem[] nombreMatriz = new tipoElem[tamaño]for (int j = 0; j < matrizDeEnteros.length; j ++) { matrizDeEnteros[j] = j; System.out.println("[j] = " + matrizDeEnteros[j]); }
length
es una propiedad de todas las matrices en Java.Las matrices pueden contener cualquier tipo Java legal incluyendo tipos de referecia como objetos u otras matrices.
Son secuencias de caracteres implementadas en la clase String (dentro del paquete java.lang). Por ejemplo:El compilador cuando encuentra un string literal reserva memoria para un objeto de tipo String que contiene la cadena dada.String[] args "La entrada tiene " " caracteres."Los Strings se usan para almacenar y manipular Strings constantes. Cuando se necesita un String que va a cambiar (aumentar o disminuir) se usa StringBuffer.
Creación de Strings y StringBuffers
Constructores de Strings: a partir de una matriz de bytes, de una matriz de caracteres, de otro String o de un StringBuffer.String vacío= new String(); String deBytes= new String(matrizDeBytes); String deCaracteres= new String(matrizDeCaracteres); String str= new String(deBytes+deCaracteres); String pepito= new String(stringBuffer);Constructores de StringBuffers: a partir de un String:
de una longitud dada o no especificada:StringBuffer pepe= new StringBuffer("Don José");StringBuffer alrededorDeDiez= new StringBuffer(10); StringBuffer muyDinámico= new StringBuffer();Concatenación de Strings
La concatenación de Strings se hace utilizando el operador sobrecargado+
. Normalmente se hace invocando el métodotoString()
en los objetos que no son de tipo String. Por ejemplo:"La entrada tiene " + cuenta + " caracteres."
Añadir, insertar y reemplazar caracteres en un StringBuffer
append(String str)
insert(int before, String str)
setCharAt(int where, char ch)
Inversión de Strings:Veamos un ejemplo de manejo de nombres de ficheros:public static String reverseIt(String source) { int i, len = source.length(); StringBuffer dest = new StringBuffer(len); for (i = (len - 1); i >= 0; i--) { dest.append(source.charAt(i)); } return dest.toString(); }Ejemplo de uso de NombreDeFicheros:class NombreDeFicheros { String caminoCompleto; char separadorDeCamino; NombreDeFicheros(String str, char sep) { caminoCompleto = str; separadorDeCamino = sep; } String extensión() { int dot = caminoCompleto.lastIndexOf('.'); return caminoCompleto.substring(dot + 1); } String nombreFichero() { int dot = caminoCompleto.lastIndexOf('.'); int sep = caminoCompleto.lastIndexOf(separadorDeCamino); return caminoCompleto.substring(sep + 1, dot); } String camino() { int sep = caminoCompleto.lastIndexOf(separadorDeCamino); return caminoCompleto.substring(0, sep); } }La salida del programa sería:class NombreDeFicherosTest { public static void main(String[] args) { NombreDeFicheros miPágina = new NombreDeFicheros("/home/pepe/publico_html/indice.html", '/'); System.out.println("Extensión = " + miPágina.extensión()); System.out.println("NombreDeFicheros = " + miPágina.nombreFichero()); System.out.println("Camino = " + miPágina.camino()); } }Extensión = html Nombre del fichero = indice Camino = /home/pepe/publico_html