Back-End

Publicidade

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.