STRING, STRINGBUILDER, AND STRINGBUFFER(OBJETIVO 3.1)
charAt(): Retorna el caracter localizado en el índice especificado.
concat(): Concatena un String al final de otra (“+” tambien funciona).
equalsIgnoreCase(): Determina la igualdad de 2 Strings, ignorando el caso.
length(): Retorna el número de caracteres en un String.
replace(): Reemlaca las ocurrencias de un caracter por otro caracter.
toLowerCase(): Retorna un String con las caracteres en mayúscula convertidos.
toString(): Retorna el valor de un String.
toUpperCase(): Retorna un String con los caracteres en minuscula convertidos.
trim(): Remueve los espacios en blanco al comienzo o final de un String.
substring(): Retorna una parte del String.
Desafortunadamente, el argumento de finalización no está basado en 0
String x = "0123456789"; // El valor de cada caracter // es el mismo que el índice System.out.println(x.substring(5)); // La salida es "56789" System.out.println(x.substring(5, 8)); // La salida es "567"
FILE E I/O (OBJETIVO 3.2)
Clase java.io | Hereda de | Argumentos del Constructor | Métodos clave |
---|---|---|---|
File | Object | File, String String String, String |
createNewFile() delete() exists() isDirectory() isFile() list() mkdir() renameTo |
FileWriter | Writer | File String |
close() flush() write() |
BufferedWriter | Writer | Writer | close() flush() newLine() write() |
PrintWriter | Writer | File (como en Java 5) String (como en Java 5) OutputStream Writer |
close() flush() format(), printf() print(), println() write() |
FileReader | Reader | File String |
read() |
BufferedReader | Reader | Reader | read() readLine() |
SERIALIZACIÓN (OBJETIVO 3.3)
Cuando se intenta serializar un objeto (Serializable) que contiene (relación HAS-A) una referencia a otro tipo de objeto pueden ocurrir ciertas situaciones:
Si el objeto contenido no implementa la interface Serializable: Se produce la siguiente excepción en tiempo de ejecución NoSerializableException.
El proceso de serialización de Java posee un mecanismo especial para los objetos que son especiales y difíciles de guardar. Se trata de un conjunto de métodos privados que se pueden implementar en la clase en cuestión. Si dichos métodos concuerdan con la signatura exacta, se invocarán durante el proceso de serialización y deserialización del objeto. Las signaturas son las siguientes:
private void writeObject (ObjectOutputStream os) { } private void readObject (ObjectInputStream is) { }
Proceso de serialización por defecto:
ObjectOutputStream.defaultWriteObject() ObjectInputStream.defaultReadObject()
Métodos para almacenar y leer datos adicionales:
ObjectOutputStream.writeInt() ObjectOutputStream.writeFloat() ObjectInputStream.readInt() ObjectInputStream.readFloat()
Si una superclase no implementa Serializable, cuando una subclase se deserializa, se invoca el constructor por defecto de la clase padre. si no posee un constructor por defecto, se producirá un error en tiempo de ejecución a la hora de deserializar el objeto.
Las variables static nunca son guardadas como parte del estado del objeto, porque no pertenecen al objeto!
FECHAS, NÚMEROS Y MONEDAS (OBJETIVO 3.4)
Para crear instancias de la clase DateFormat, se deben utilizar los métodos estáticos getInstance() y getDateInstance()
Locale italia = new Locale("it","IT"); DateFormat dfItalia = DateFormat.getDateInstance(DateFormat.FULL, italia); System.out.println("La fecha en italia: " +dfItalia.format(c.getTime())); NumberFormat nfItalia = NumberFormat.getCurrencyInstance(italia); System.out.println("El precio en italia es: " +nfItalia.format(new BigDecimal("32.75")));
Caso de uso | Pasos |
---|---|
Obtener la fecha y hora actual | 1.Creamos un Date: Date d = new Date(); 2.Obtenemos el valor: String s = d.toString(); |
Obtener un objeto que nos permita realizar calculos de fecha y hora en nuestra localización. |
1.Creamos un objeto de la clase Calendar: Calendar c = Calendar.getInstance(); 2.Usamos c.add(…) y c.roll(…) para realizar manipulaciones de datos. |
Obtener un objeto que nos permita realizar cálculos en una localización diferente. |
1.Creamos un objeto Locale: Locale loc = new Locale(language); Locale loc = new Locale(language, country); 2.Creamos un Calendar para ese Locale: Calendar c = Calendar.getInstance(loc); 3.Usamos c.add(…) y c.roll(…) para realizar manipulaciones de fechas y horas |
Obtener un objeto que nos permita realizar cálculos de fecha y hora, y entonces formatear la salida en diferentes localizaciones con diferentes estilos de fecha. |
1.Creamos un Calendar: Calendar c = Calendar.getInstance(); 2.Creamos un Locale para cada localización: Locale loc = new Locale(…); 3.Convertimos Calendar a Date: Date d = c.getTime(); 4.Creamos un DateFormat para cada Locale: DateFormat df = DateFormat.getDateInstance(style, loc); 5.Usamos los métodos de format() para crear fechas formateadas: String s = df.format(d); |
Obtener un objeto que nos permita formatear numeros y monedas en los diferentes localizaciones: |
1.Creamos un Locale para cada localizacion: Locale loc = new Locale(…); 2.Creamos un NumberFormat: NumberFormat nf = NumberFormat.getInstance(loc); o NumberFormat nf = NumberFormat.getCurrencyInstance(loc); 3.Usamos el método format() para crear una salida formateada: String s = nf.format(someNumber); |
Clase | Opciones de Creacion Clave de la Instancia |
---|---|
util.date | new Date(); new Date(long millisecondsSince010170); |
util.Calendar | Calendar.getInstance(); Calendar.getInstance(Locale); |
util.Locale | Locale.getDefault(); new Locale(String language); new Locale(String language, String country); |
text.DateFormat | DateFormat.getInstance(); DateFormat.getDateInstance(); DateFormat.getDateInstance(style); DateFormat.getDateInstance(stryle, Locale); |
text.NumberFormat | NumberFormat.getInstance(); NumberFormat.getInstance(Locale); NumberFormat.getNumberInstance(); NumberFormat.getNumberInstance(Locale) NumberFormat.getCurrencyInstance(); NumberFormat.getCurrencyInstance(Locale); |
PARSEO, TOKENIZING Y FORMATEO (OBJETIVO 3.5)
Los metacaracteres utilizados en el examen son: ‘\d’, ‘\w’, ‘\s’ y ‘.’.
Los cuantificadores utilizados en el examen son: ‘?’, ‘*’ y ‘+’.
Los métodos que son utilizados en el examen son:
- Pattern: compile()
- Matcher: matches(), pattern(), find(), start() y group().
Búsqueda Usando Metacaracteres
- \d Un dígito
- \s Un caracter espacio
- \w Un caracter de palabra (letras, dígitos, o «_»)
[abc] Busca solo caracteres a, b o c
[a-f] Busca solo caracteres desde la a hasta la f
[a-fA-F] Busca las primeras 6 letras del alfabeto, en ambos casos
Búsquedas Usando Cuantificadores
- + Una o mas ocurrencias
- * Cero o mas ocurrencias
- ? Cero o una ocurrencia
- ^ negación
- . Cualquier caracter
Cuantificadores «Codiciosos»
- ? es «greedy», ?? es «reluctant», para cero o ninguno
- * es «greedy», *? es «reluctant», para cero o ninguno
- + es «greedy», +? es reluctant, para uno o varios
El delimitados por defecto del Scanner es el espacio en blanco, el cual el programa usa.
Formateando con printf() y format()
%[arg_index$][flags][width][.precision]conversion char
arg_index: Un entero seguido directamente por un $, indica que argumento debería ser impreso en esta posición.
flags: Mientras hay varios flags disponibles, los mas básicos son los siguientes:
«-« Justifica a la izquierda este argumento.
«+» Incluye el signo (+ p -) con este argumento.
«0» Rellena este argumento con ceros.
«,» Usa separadores de grupo específicos de una localización (Ejemplo, la coma en 123,456).
«(« Cierra números negativos entre paréntesis.
width: Este valor indica el número mínimo de caracteres a imprimir.
precision: En el caso de números que son float, la precisión indica el número de dígitos después del punto decimal.
conversion: El tipo de argumentos que vamos a formatear. Tenemos que saber:
b boolean
c char
d integer
f floating point
s string
int i1 = -123; int i2 = 12345; System.out.printf(">%1$(7d< \n", i1); System.out.printf(">%0,7d< \n", i2); System.out.printf(">%+-7d< \n", i2); System.out.printf(">%2$b + %1$5d< \n", i1, false);
> (123)< >012.345< >+12345 < >false + -123<
En las siguientes imágenes pueden ver un resumen muy completo: