As classes wrappers estão correlacionadas aos tipos primitivos. Sendo assim posso converter primitivos em objetos, e vice-versa.
Funções principais:
1. encapsular tipos primitivos para que possam ser manipulados como objetos
2. fornecer métodos utilitários para tipo primitivos
Então agora é possível:
1. converter de um objeto wrapper para primitivo
2. converter de string para primitivo
3. converter de string para objeto wrapper
Quando usar?
1. Simples: quando deseja usar um “primitivo”como objeto.
2. Quando um objeto recebe um valor e você deseja manipulá-lo como primitivo
3. Para trabalhar com Conjuntos/Genéricos
Wrappers no Java 5/superior
A partir do java 5 o recurso de boxing permite converter tipos primitivos em wrappers ou de wrappers para primitivos automaticamente, ou seja, sem nenhum tipo de conversão o próprio compilador já faz isso para nós programadores.
Regra:
Para usar o == com wrappers não é como usar com os primitivos. A diferença é que valores ate 127 serão iguais, além disso não será considerado igual.
Diferenciar um Wrapper de Tipos primitivos
Bem há uma diferença até na nomeação. As classes wrappers têm o sua nomeação iniciada em MAIÚSCULO enquanto os tipos primitivos estão em minúsculo.
l Tipo primitivo: int, double, char.
l Wrapper: Integer, Double, Long.
Primitivos X Wrappers
1. int numb = 10;
2. Integer numb = new Integer(10);
Temos situações diferentes nos códigos acima:
1. uma variável do tipo primitivo com o valor 10.
2. um objeto da classe Integer, e não um tipo primitivo.
Os métodos de conversão:
Há três métodos de conversão nas classes wrappers que são: xxxValue(), parseXxx(),valueOf(). Veja na tabela abaixo a definição de cada um:
XxxValue() – objeto.tipoprimitivoValue()
- serve para converter o valor de um objeto em um tipo primitivo.
Integer i2 = new Integer(42);
double d = i2.doubleValue(); // aqui eh a conversão do Objeto Integer para double
Obs.: então minha variável do tipo primitivo d tem o valor agora do objeto wrapper i2.
Float f2 = new Float(3.14f);
short s = f2.shortValue();//conversão do valor do objeto para tipo primitivo short.
parseXXX(), usa o argumento String.
Converte de String para Wrapper. Essa classe lança uma exceção na tentativa de converter “dois em um tipo primitivo”
Exemplo:
double d4 = Double.parseDouble(“3.14”); //converto de String para double
valueOf() – essa converte de String para Wrapper (Integer, Long etc.)
xxx.valueOf() – tipoprimitivo.valueOf(“string”);
Double d5 = double.valueOf("3.14"); //converto de String em um objeto class Wrapper
Para ficar mais claro o entendimento, desenvolvi as classes a seguir com exemplos para fixar o que já foi dito, confiram:
code 1
public class ExceWrap {
public static void main(String[] args) {
int z= Integer.parseInt("dois");
System.out.println(z);
/* codigo compila sem problemas mais uma excecao vai acontecer
* nao há nada de errado na sintaxe
* porem a jvm nao consegue converter uma string literal
* em um numero inteiro
*/
}}
Exception in thread "main" java.lang.NumberFormatException: For input string: "dois"
code 2
public class Par {
public static void main(String[] args) {
//String - primitivo
double d = Double.parseDouble("10");
System.out.println(d);
}}
code 3
public class NoValue {
public static void main(String[] args) {
Long l = new Long(8);
int lh = l.longValue();
/* nao compila o to tentando colocar um long
* dentro de um int nao é valido isso
*/
}}
code 4
public class OfVal {
public static void main(String[] args) {
//String --> OBJETOS
Float f = Float.valueOf("10");
System.out.println(f);
Integer i = new Integer(10);
//Objeto --> Primitivo
int g = i.intValue();
}}
code 5
public class WrpObjt {
public static void main(String[] args) {
Integer g = new Integer (10);
Integer h = new Integer(10);
System.out.println(g==h);//false
/* aqui dois objetos diferentes
* porem com mesmo valor
* == testa a referencia e nao valores dos
* objetos */}}
Vou ficando por aqui, espero tenham gostado, e até a próxima. Have a nice week :). Aproveitando o momento, convido os leitores iMasters para dar uma passada no meu blog. Esta semana estamos discutindo as técnicas de como passar em uma entrevista de inglês.