Clases System, String, StringBuffer, Math y Wrapper FJP – Unidad 6 Clase System Ubicación: java.lang.System Funcionalidad principal: – acceder a los dispositivos del sistema operativo de bajo nivel – entrada y salida de los programas Posee 3 atributos de clase (static) - referencias a objetos de clases: InputStream (in) y PrintStream (out y err) Default input device Æ teclado Default output device Æ pantalla Todos sus métodos son de clase: gc(), runFinalization(), getProperties(), etc Academia Local Cisco – UTN Facultad Regional Santa Fe – http://www.santafecna.org.ar 1 System .in.read( ) System.in.read( public class MasDeUnCaracter { public static void main (String[ ] args) throws Exception { int selection = 0; String userinput = " "; System.out.print (“Ingrese un número de 3 cifras y presione Enter:”); while (selection != 10 && selection != 13) { selection = System.in.read(); userinput += (char) selection; } if(selection == 13) // retorno de carro { System.in.read(); System.out.println (userinput); } } } Academia Local Cisco – UTN Facultad Regional Santa Fe – http://www.santafecna.org.ar Clase String Se pueden crear objetos de clase String según 2 reglas de sintaxis: String cadena = “hola”; Æ alojado en el Pool de Strings O bien: String cadena = new String(“hola”); Æ alojado en el Heap Academia Local Cisco – UTN Facultad Regional Santa Fe – http://www.santafecna.org.ar 2 Ej. comparación de Strings // s1 referencia a un objeto string creado en el heap String s1 = new String(“Juan”); // s2 referencia a un objeto string creado en el heap String s2 = new String(“Jazmín”); String s3 = s1; // s3 y s1 referencian al mismo objeto en el heap String s4 = s3; // s4 y s3 referencian al mismo objeto en el heap String s5 = “Tomás”; // s5 referencia a un objeto en el pool de strings String s6 = “Juan”; // s6 referencia a un objeto en el pool de strings // s7 referencia a un objeto string creado en el heap String s7 = new String(“Jazmín”); String s8 = “Tomás”; String s9 = new String(“juan”); Academia Local Cisco – UTN Facultad Regional Santa Fe – http://www.santafecna.org.ar Ej. comparación de strings ((cont.) cont.) s1.equals(s2); // falso Cada objeto string manipula un arreglo de caracteres diferente s4.equals(s1); // verdadero Ambas referencias son al mismo objeto s2.equals(s7); // verdadero El método equals de la clase string ejecuta una comparación profunda del contenido (deep comparison) s1.equals(s6); // verdadero El método equals de la clase String ejecuta una comparación profunda del contenido en caracteres, no de las direcciones de objeto Academia Local Cisco – UTN Facultad Regional Santa Fe – http://www.santafecna.org.ar 3 Ej. comparación de strings ((cont.) cont.) s4 == s1; // verdadero Ambas referencias apuntan al mismo objeto (comparación superficial o shallow) s2 == s7; // falso Cada variable apunta a una dirección de objeto diferente (comparación superficial) s8 == s5; // verdadero Ambas referencias apuntan al mismo objeto string en el pool de strings s1.equalsIgnoreCase(s9); // verdadero Comparación profunda ignorando mayúsculas y minúsculas Academia Local Cisco – UTN Facultad Regional Santa Fe – http://www.santafecna.org.ar Métodos de la clase String s1.compareTo(s9); // 0 (cuando equals() = true) s6.length(); // 6 s5.charAt(2); // el caracter cuyo índice es 2 (tercer caracter) es ‘m’ s7.substring(3); // porción del string ‘Jazmín’ comenzando desde el cuarto caracter, resulta en ‘mín’ Academia Local Cisco – UTN Facultad Regional Santa Fe – http://www.santafecna.org.ar 4 Clase String Todos los datos primitivos son convertidos de forma implícita a String: String c1 = “” + 3; System.out.println(5); Cualquier objeto puede convertirse a String a través del método toString( ) Método toString( ) : heredado de la clase Object Æ cualquier objeto posee dicho método. Es recomendable sobreescribirlo. Estudiante e1 = new Estudiante( ); System.out.println(e1); Æ println sobrecargado para recibir cualquier objeto. (uso de toString()) Academia Local Cisco – UTN Facultad Regional Santa Fe – http://www.santafecna.org.ar Clase StringBuffer Las clases String y StringBuffer son independientes, poseen sus propios métodos. Única sintaxis de StringBuffer: StringBuffer s1 = newStringBuffer(“hola”); Métodos: append(char c); delete(int start, int end); deleteAt(int index); insert(int offset, String str); reverse(); toString(); ... Academia Local Cisco – UTN Facultad Regional Santa Fe – http://www.santafecna.org.ar 5 Clases Wrapper Ubicación: java.lang Representan datos primitivos mediante objetos. Existe una para cada tipo de dato primitivo. Implementan objetos inmutables. No pueden trabajar con operadores. Todas las operaciones se realizan mediante métodos (de clase). Útiles para convesión de datos Ej.: convertir un valor numérico almacenado como string a int int numInt = Integer.parseInt(numString); Academia Local Cisco – UTN Facultad Regional Santa Fe – http://www.santafecna.org.ar Clases del paquete Math Las clases BigDecimal y BigInteger sirven para manipular números con una secuencia larga arbitraria de dígitos. - Valores con representación mayor a 64 bits Ubicación: java.math Ej: BigInteger a1 = new BigInteger(“12321547546513216544687321”); Para almacenar valores comunes: BigInteger a1 = BigInteger.valueOf(25412); Sólo uso de métodos para realizar operaciones. Ej.: BigInteger granEntero = granEntero.add(BigInteger.valueOf(100)); Ej.: BigDecimal granDec = granDec.multiply(BigDecimal.valueOf((long)500.234f)); Academia Local Cisco – UTN Facultad Regional Santa Fe – http://www.santafecna.org.ar 6 Manipulación de Fechas Existen tres clases en la API Java para trabajar con fechas clase Date (java.util) Æ crea un objeto del tipo Date clase Calendar (java.util) Æ configura o cambia la fecha de un objeto Date clase DateFormat (java.text) Æ muestra la fecha en diferentes formatos Academia Local Cisco – UTN Facultad Regional Santa Fe – http://www.santafecna.org.ar 7