qué es java.lang? clase object wrapper classes utilidades de conversión de tipos clase string...

Post on 16-Feb-2015

82 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Qué es java.lang? Clase Object Wrapper Classes Utilidades de Conversión de tipos Clase String Clase StringBuffer Clase Math

Se importa automáticamente en tiempo de compilación.

Contiene a la clase Object y las Wrapper

Provee objetos para interactuar con la JVM

Contiene clases que proveen:₋ los streams de entrada, salida y error (System), ₋ manejo de cadena de caracteres (String, StringBuffer) ₋ funciones matemáticas (Math)

Método Descripción

boolean equals(Object o) Define si dos objetos son equivalentes.

void finalize() Llamado por el Garbage Collector, cuando el Garbage Collector detecta que un objeto no puede ser referenciado.

int hashCode() Retorna un código para un objeto, para que el objeto pueda ser usado en una clase Collection que utilice un Hashtable, HashMap o HashSet.

final void notify() Activa un hilo que esta esperando para obtener el bloqueo de un objeto.

final void notifyAll() Activa todos los hilos que están esperando para obtener el bloqueo de un objeto.

final void wait() Provoca que el hilo actual espere hasta que otro hilo ejecute el método notify o notifyAll.

String toString() Retorna una “Representación de texto” del objeto.

Los tipos primitivos no son objetos Para poder manipularlos como objetos java.lang

provee clases wrapper para cada tipo primitivo

Todas las clases Wrapper son inmutables (su estado no puede cambiar)

Adicionalmente definen constantes útiles

Todas las clases wrapper a excepción de Character tienen 2 constructores:

₋ Uno que recibe el tipo primitivo que se quiere construir

₋ Otro que recibe la representación en String del tipo que se quiere construir

Integer i1 = new Integer(42);Integer i2 = new Integer("42");oFloat f1 = new Float(3.14f);Float f2 = new Float("3.14f");

La clase Character provee un solo constructor que recibe un char: Character c1 = new Character('c');

El constructor del objeto Boolean recibe un boolean o un string (case insensitive) con el valor “true” o “false”

El objeto Boolean no puede ser usado en una condición:Boolean b = new Boolean(“true”);

if (b) { …} // No compila, espera un boolean y no un Boolean

Los métodos estáticos valueOf( ) presentes en la mayoría de las clases wrapper, proveen otra forma de construir estos objetos:

valueOf(String arg0, int base) // convierte 101011 a 43 y

// asigna el valor 43 a i2 Integer i2 = Integer.valueOf("101011", 2);

valueOf(String arg0) // asigna 3.14 a f2 Float f2 = Float.valueOf("3.14f");

Una funcionalidad importante de los wrappers es convertir tipos de datos

xxxValue()

Cuando se quiera convertir un wrapper a un tipo primitivo se puede utilizar alguno de los métodos xxxValue()

Integer i2 = new Integer(42); // crea un nuevo objeto wrapper

byte b = i2.byteValue(); // convierte el valor de i2 a un byteshort s = i2.shortValue(); // otro de los métodos xxxValue double d = i2.doubleValue();

Ambos reciben un String como argumento

Lanzan una NumberFormatException si el String no tiene la forma esperada

Pueden convertir Strings en bases diferentes

La diferencia es que:₋ parseXxx() retorna un tipo primitivo₋ valueOf retorna un objeto wrapper

La clase Object tiene el método toString(), heredado por todas las demás clases

La idea del método es dar una representación del objeto que tenga cierto sentido

Adicionalmente los wrappers agregan un toString estático que recibe el tipo primitivo correspondiente y retorna el String que lo representa

Las clases Integer y Long permiten convertir números en base 10 a otras bases

Estos métodos toXxxString toman un int o un long y retornan un String que lo representa:

String s3 = Integer.toHexString(254); // convierte 254 a hexaSystem.out.println("254 in hex = " + s3); // el resultado es "254 in hex = fe"String s4 = Long.toOctalString(254); // convierte 254 a octalSystem.out.println("254 in octal = "+ s4); // el resultado es "254 in octal =

376"

Problema (versiones previas a J2SE5.0)

₋ Pasar de un tipo primitivo a tipo wrapper y viceversa.

₋ La forma de hacerlo era:Integer j = new Integer(12);Int I = j.intValue();

₋ Problemas: por ejemplo al manejar colecciones con tipos primitivos. Estas solo aceptan objetos.

Solución – El compilador trabaja por nosotros:

Byte byteObj = 22; // Autoboxing conversionint i = byteObj // Unboxing conversion

ArrayList<Integer> al = new ArrayList<Integer>();al.add(22); // Autoboxing conversion

Los Strings son objetos inmutables.

Cada carácter en un String es un char Unicode de 16 bits.

En Java los Strings son objetos

String s = new String();

s = “abcdef”

Variantes

String s = new String(“abcdef”);

String s = “abcdef”

El objeto no puede cambiar La referencia al objeto si puede cambiar

public char charAt(int index) public String concat(String s) public boolean equalsIgnoreCase(String s) public int length() public String replace(char old, char new) public String substring(int begin) public String substring(int begin, int end) public String toLowerCase() public String toUpperCase() public String trim()

Utilizada cuando se deben realizar muchas modificaciones a una cadena de caracteres

Si bien los Strings son inmutables, el StringBuffer puede ser modificado sin dejar una gran cantidad de Strings inutilizados en memoria

Utilizando StringBuffer:

StringBuffer sb = new StringBuffer("abc");sb.append("def");System.out.println("sb = " + sb); // la salida es "sb = abcdef"

public synchronized StringBuffer append(String s)public synchronized StringBuffer insert(int offset,

Stringpublic synchronized StringBuffer reverse()

Utilizada para realizar operaciones matemáticas.

Define aproximaciones para las constantes matemáticas pi y e₋ public final static double Math.PI₋ public final static double Math.E

Todos los métodos definidos en Math son static.

abs() – retorna el valor absoluto.

ceil() – retorna el redondeo hacia arriba.

floor() – retorna el redondeo hacia abajo.

max() – retorna el máximo

min() – retorna el mínimo

random()₋ Retorna un double entre 0.0 y 1.0

round()₋ Redondea al valor más cercano₋

sin()₋ representa un ángulo en radianes. Los grados pueden convertirse

a radianes utilizando Math.toRadians(double g)

cos() – función coseno tan() - función tangente sqrt() – función raíz cuadrada

₋ Retorna NaN (“Not a Number”) en lugar de un resultado complejo₋ public static double sqrt(double a)

toDegrees() ₋ Recibe un argumento representando un ángulo en radianes₋ public static double toDegrees(double a)

toRadians()₋ Recibe un argumento representando un ángulo en grados₋ public static double toRadians(double a)

Qué es java.lang? Clase Object y sus características Wrapper Classes: qué son? Cómo se usan? Utilidades de Conversión de tipos Clase String: características Clase StringBuffer: características Clase Math: características

Thinking in Java₋ Bruce Eckel

The Java Tutorial₋ http://download.oracle.com/javase/tutorial/

top related