Вы находитесь на странице: 1из 2

Usando as classes Wrappers As classes wrappers tem o papel de encapsular os tipos primitivos para a possibilidade de operaes como: converses,

mudana de bases decimais, e algumas operao que somente a objetos permitido, como por exemplo, trabalhar com conjuntos (que ser abordado no captulo seguinte). Todo tipo primitivo tem uma classe wrapper correspondente, vejamos: byte Byte int Integer short Short long Long char Character float Float double Double boolean Boolean

Note que os nomes das classes wrapper tem o mesmo nome dos tipos primitivos, a exceo de Integer e Character, e isso no teve nenhuma graa por parte dos desenvolvedores. Para criar um objeto podemos fazer da seguinte forma:
1. 2. Integer a = new Integer("10"); Integer b = new Integer(10);

Note que as classes tem os construtores sobrecarregados, ou seja, aceitam o valor String e o valor int no caso anterior, vejamos outro exemplo:
1. 2. 3. 4. Float f1 = Float f2 = Boolean b1 Boolean b2 new Float("14.0f"); new Float(14.0f); = new Boolean("TRUE"); = new Bolean(true)

No caso da classe Boolean, voc poder instanciar um objeto passando uma string TRUE ou FALSE, independente se estas forem maisculas ou minsculas. 6.4.1 - mtodos importantes valueOf() xxxValue() parseXxx() Os mtodos acima devem ser compreendidos para o sucesso nas respostas sobre as classes Wrappers. 6.4.1.1 - o mtodo valueOf() um mtodo esttico que quase todas classes wrapper tem que retorna o objeto wrapper a classe relacionada. Esse mtodo tem uma funcionalidade muito interessante, pois pode converter nmeros em bases diferentes, vejamos:
1. Integer i1 = Integer.valueOf("89");

Retorna um objeto Integer na base decimal.


1. Integer i2 = Integer.valueOf("89",2);

Tentativa de retornar um objeto Integer, porm nesse caso foi especificado a base 2 (binrio) como "89" nunca foi e nunca ser um nmero binrio, essa linha gerar um exceo java.lang.NumberFormatException. No pense em usar:
1. 2. Float.valueOf("89.0",2) ou Double.valueOf("89.0",2)

que voc ter um erro de compilao, pois as classes Float e Double no tem esse mtodo com essa assinatura.
1. 2. Float f1 = Float.valueOf("10f"); Float f2 = Float.valueOf("10.0f");

Porm as linhas acima seriam compiladas sem nenhum problema. NO ESQUEA: No pense que esse mtodo sobrecarregado como os construtores permitindo que voc passe o tipo primitivo diretamente: Float f1 = Float.valueOf(10f);

Linguagem de Programao 1 FPU Joaquim Leonardo

6.4.1.2 - o mtodo xxxValue() Assinatura do mtodo:


1. 2. 3. 4. 5. 6. public public public public public public int intValue() byte byteValue() short shortValue() long longValue() float floatValue() double doubleValue()

Observe que no so mtodos estticos. Esse mtodo tem a funo de realizar converses dentro das classes wrapper, pois como dissemos uma caracterstica dessas classes:
1. 2. 3. 4. 5. 6. 7. 8. public class TestWrappers { public static void main(String[] args) { Float w = Float.valueOf("89f"); int i = w.intValue(); System.out.println(w.toString()); System.out.println(i); } }

O programa acima est fazendo uma converso do valor que o objeto w est armazenando e convertendo para o tipo primitivo int. Poderamos converter para qualquer outro, vejamos:
1. 2. byte b = w.byteValue(); short s = w.shortValue();

6.4.1.3 - o mtodo esttico parseXxx() Outra forma de se converter usando os mtodos parses, vejamos um exemplo bem simples para entender como isso funciona: Imaginemos que voc no precise criar um objeto wrapper necessariamente para realizar uma converso, voc pode usar o mtodo parseXxx para realizar tal tarefa: int i = Integer.parseInt("10"); A string passada como parmetro deve corresponder a um tipo primitivo int, seno uma exceo ser lanada como podemos observar no exemplo a seguir: int i = Integer.parseInt("10f"); Nesse caso uma exceo ser lanada: java.lang.NumberFormatException 6.4.1.4 - o mtodo toString() O mtodo toString() tem uma funcionalidade semelhante as vistas at aqui. E alem do mais as classes Wrapper tem um mtodo esttico toString() sobrecarregado, ou seja, se voc precisar transformar uma varivel int em String, voc pode usar: int i = 10;
1. 2. 3. 4. 5. 6. 7. 8. Opo 1: String s = ""+ i; Opo 2: String s = new Integer(i).toString(); Opo 3: String s = Integer.toString(i);

Voc concordar comigo que a opo 3 a mais elegante, visto que no cria nenhum objeto na memrio, e a opo 1 no vou nem me estressar em definir aquilo. (mas acreditem eu j usei!) Voc tambm poder chamar o mtodo toString do objeto:
1. 2. Float f = Float.valueOf("10.0"); System.out.println(f.toString());

Linguagem de Programao 1 FPU Joaquim Leonardo

Вам также может понравиться