| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/11/2006 14:10:57
|
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/
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/11/2006 16:19:43
|
Mantu
GUJ Ranger
![[Avatar]](/images/avatar/35285aa740b37f0b1933da97bf4ca4b9.jpg)
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.
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/11/2006 16:22:30
|
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/11/2006 23:14:33
|
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/11/2006 12:54:53
|
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/
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/05/2011 08:08:28
|
denisbenjamim
Entusiasta Java
![[Avatar]](/images/avatar/f4615e00839630e3bb6820f421d90384.jpg)
Membro desde: 06/08/2010 13:57:07
Mensagens: 18
Localização: Santos
Offline
|
Parabens Otima explicação .
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/01/2012 12:02:33
|
orlandosso
Smalltalk
![[Avatar]](/images/avatar/d88b7c7a0219c4f410184c02f1305397.jpg)
Membro desde: 12/01/2012 11:58:25
Mensagens: 1
Offline
|
Explicação muito fodah vlws!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/01/2012 07:33:55
|
Prates
What is classpath?
Membro desde: 01/04/2011 10:51:15
Mensagens: 5
Offline
|
Cara, que explicação. Muito bom, muito bom.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/01/2012 07:39:34
|
douglaskd
GUJ Ranger
![[Avatar]](/images/avatar/836e08ad1864b72840258c910b729fb6.jpg)
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 ?
|
|
|
 |
|
|