int X Integer  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
LPJava
GUJ Hacker

Membro desde: 18/04/2006 12:50:23
Mensagens: 5524
Localização: Bahia/Porto Alegre
Offline

a pessoal para q serve a class wrapper e qual a diferença:



e sobre o autoboxing, boxing.. qual sua função.. to lendo a kathy mais conseguir entender a diferença entre isso.. olhei no deitel tb.. eles nao foi claro.. se alguem puder dar esse help ai agradeço..

Sun Certified Java Programmer 5.0
Blog:http://www.camilolopes.com
Twitter:www.twitter.com/camilolope
Linkedin: http://br.linkedin.com/in/camilolopes
Curso online OCPJP: http://pro.imasters.com.br/online/cursos/preparatorio-para-certificacao-java-ocjp
Autor livro Guia SCJP & JEE c/ Frameworks: http://blog.camilolopes.com.br/livrosrevistaspalestras/
[WWW]
Mantu
GUJ Ranger
[Avatar]

Membro desde: 27/03/2006 09:05:16
Mensagens: 961
Localização: São Paulo/SP
Offline

É comum ouvirmos dizer que em Java, tudo é objeto, ou melhor, tudo é Object. Mas não é bem assim... Em java, quase tudo é Object. Os tipos de dado em java dividem-se em objetos e tipos primitivos.
Objetos são estruturas de dados que apresentam estado e/ou comportamento. Um classe em java especifica os estados(campos) e comportamentos(métodos) de um objeto.
Um tipo primitivo é apenas um valor armazenado em uma posição de memória. A unica informação que temos a respeito de um valor desses é o seu tipo, que em java pode ser:
boolean
byte
short
char
int
long
float
double
Um tipo primitivo não é um objeto, não pode ser tratado como objeto. Tanto que em java você, por exemplo, não pode atribuir null a uma referência de um tipo primitivo:

Existem casos em que representamos alguma informação do mundo real através de um tipo primitivo, mas precisamos também utilizar essa informação em "algum lugar" onde seja exigido um objeto, e não um tipo primitivo.
Um exemplo bem básico desta situação: Imagine que queremos ter uma lista que aumente ou diminua de tamanho dinamicamente. Esta lista servirá para armazenarmos números inteiros entrados pelo usuário. Quando o usuário parar de entrar com valores, calcularemos a média dos valores entrados.
A tal da lista dinâmica pode ser um ArrayList:

Depois, teriamos que pegar cada inteiro digitado pelo usuário:

E, para cada um destes inteiros, adicioná-los à lista.

Só que aí temos um problema: O método add da classe ArrayList pede por parâmetro um objeto do tipo Object, e estamos passando um valor int. Como vimos antes, int é um tipo primitivo, e um tipo primitivo [/u]não é um objeto. Configura-se aqui então o caso em que queremos ter um dado de um tipo primitivo (valor) e queremos também utilizar este dado em um contexto onde só se aplicam objetos (valoresEntrados.add([u]Object)).
E agora? Quer dizer então que em Java eu não posso ter um ArrayList que armazene ints? Nem tão pouco um ArrayList de qualquer outro tipo primitivo? Resposta: Isso mesmo! Você não pode ter tal ArrayList... .
Porém, Java te dá uma saída pra este problema: As classes wrapper.
Em inglês, o verbo "to wrap" quer dizer envolver. É exatamente pra isso que serve uma classe wrapper: Envolver um tipo primitivo. E pra que diabos eu quero "envolver um tipo primitivo"? Simples! Pra poder tratar o seu tipo primitivo como se fosse um objeto!!! É como se a classe wrapper fosse um envelope, dentro do qual você guarda o tipo primitivo.
Em java, temos uma classe wrapper para cada tipo primitivo:
boolean java.lang.Boolean
byte java.lang.Byte
short java.lang.Short
char java.lang.Character
int java.lang.Integer
long java.lang.Long
float java.lang.Float
double java.lang.Double
Perceba como essas classes wrapper são úteis no nosso exemplo do "ArrayList de int": Podemos agora "envolver" o valor em um objeto da classe wrapper Integer, e então adicioná-lo ao nosso valoresEntrados

Basicamente, é pra isso que serve as classes wrapper.
Tenho um compromisso agora, e por isso não terei tempo de falar sobre autoboxing agora, mas, em linhas gerais, o autoboxing é a capacidade do Java5 de, automaticamente, entvolver um tipo primitivo em um respectivo objeto wrapper, conforme ele dectar tal necessidade.
Espero ter ajudado!

[]'s
Mantu

"Vou lançar o 'Caguei'. Caguei para o 'Cansei'". Luciano Camargo
"O povo votou contra a opinião pública". Um certo jornalão da mídia golpista, a respeito da vitória de um certo cadidato a presidente do Brasil.

[Email] [MSN] [ICQ]
rodrigo.ccn2005
HelloWorld

Membro desde: 29/03/2006 12:35:03
Mensagens: 12
Offline

As classes wrapper serverm para empacotar tipos de dados primitivos (int, short, char... ) em objetos (Integer, Short, Character...) para que possam ser usados em estruturas de dados que só se aplicam em objetos. E.g.: voce não pode usar um Vector, um ArrayList ou uma Stack para armazenar valores int ou char, voce deve usar Integer, ou Character.
As funcionalidades do autoboxing e autounboxing permitem que voce supostamente grave um int numa destas estruturas, e o java converte para Integer, na hora de ler o java converte denovo o Integer em int.

exemplo:


ps:que eu me lembre o autoboxing e autounboxing so existem depois do j2se5

Espero ter ajudado mais que atrapalhado...
Rodrigo,

Rodrigo,

scjp1.4
nania
Thread.start()

Membro desde: 22/09/2006 13:35:52
Mensagens: 43
Offline

kra, eu sei q nao fui q abri o topico, mas obrigadão ai vei, esclareceu bastante tb sobre as classes wrappers

eu tava vendo aqui em casa eu consigo fazer autoboxing, tipo um Integer receber um int, mas na facul q o java é a versao 4 eu tenho q usar cast


brigadao ai cara pela explicação
LPJava
GUJ Hacker

Membro desde: 18/04/2006 12:50:23
Mensagens: 5524
Localização: Bahia/Porto Alegre
Offline

boa explicacao da galea ai valeu,,, agora percebi a diferença ente int X Integer. valeu mesmo..

Sun Certified Java Programmer 5.0
Blog:http://www.camilolopes.com
Twitter:www.twitter.com/camilolope
Linkedin: http://br.linkedin.com/in/camilolopes
Curso online OCPJP: http://pro.imasters.com.br/online/cursos/preparatorio-para-certificacao-java-ocjp
Autor livro Guia SCJP & JEE c/ Frameworks: http://blog.camilolopes.com.br/livrosrevistaspalestras/
[WWW]
denisbenjamim
Entusiasta Java
[Avatar]

Membro desde: 06/08/2010 13:57:07
Mensagens: 18
Localização: Santos
Offline

Parabens Otima explicação .
[Email] [WWW] [MSN]
orlandosso
Smalltalk
[Avatar]

Membro desde: 12/01/2012 11:58:25
Mensagens: 1
Offline

Explicação muito fodah vlws!
[MSN]
Prates
What is classpath?

Membro desde: 01/04/2011 10:51:15
Mensagens: 5
Offline

Cara, que explicação. Muito bom, muito bom.
douglaskd
GUJ Ranger
[Avatar]

Membro desde: 04/07/2010 00:51:49
Mensagens: 839
Localização: Campinas - SP
Offline

quando é interessante usar tipos primitivos ao inves de seus respectivos objetos ? performance ?
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team