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

Aprendendo Java com as "Estrias do Cachimbo"

O tamanho dos copos -- uma estria sobre variveis


Introduo
Este texto uma livre traduo da verso em ingls que se encontra em http://www.javaranch.com/campfire/ tor!"ups.jsp. # texto marcado pela irreverncia e simplicidade de linguagem$ que so marcas caracter%sticas do site &avaranch. 'esta est(ria os conceitos de primitivas e de referncias so a)ordados de forma simples e clara usando como pano de fundo copos de uma cafeteria. *oa leitura.

A cafeteria "Coffe Corral" do rancho famosa pela sua coleo de copos. Se voc realmente precisa entender como valores e objetos so usados em Java, voc deve comear por a ui. Eu adoro copos. "opos grandes $ copos pequenos. "opos de ch+ pintados$ grandes copos de cappuccino$ copos com a logo da cafeteria da ,"-.. "opos em que pintei /.ll 0ired ,p/$ numa loja de cer1mica. "opos com curvas para uma empunhadura sex!. "opos met+licos$ que agora eu sei que nunca devem ir ao microondas. Ento$ quando em penso em vari+veis$ naturalmente eu penso em...copos. ,ma vari+vel como um copo. Eles tm um tamanho e podem conter algo. Em &ava$ copos vem em dois estilos: primitivas e referncias. "opos de primitivas possuem valores de primitivas. "opos de referncia possuem o /controle remoto/ de o)jetos. 2amos iniciar com as primitivas. "opos de primitivas so como os copos da cafeteria. e voc conhece o tar)uc34s$ voc sa)e o que eu quero di5er. Eles vm em tamanhos diferentes$ e cada tamanho tem um nome como short 6curto7$ tall 6alto7$ grande. "omo se voc dissesse: /Eu quero um &ava grande com creme extra$ e por favor use leite desnatado./ 'ossa cafeteria tem um desenho indicando o tamanho dos copos para que o cliente possa sa)er quais so. .lgo como isto:

Em &ava$ primitivas inteiras vm em diferentes tamanhos e estes tamanhos tm nomes. Eles so:

Estes copos possuem um valor. .ssim$ ao invs de di5er$ /Eu gostaria de um copo alto de 0rench 8oast/$ voc diria ao compilador$ /Eu gostaria de um int de n9mero :;$ por favor./ E o que voc vai o)ter. 6voc tam)m pode dar um nome ao copo$ mas vamos ver isso depois.7 # n9mero :; dropped 6inserido7 no seu tamanho de copo. E os n9meros de ponto flutuante < 6coisas com ponto decimal7 Eles possuem seus pr(prios copos tam)m.

Existem tam)m copos para )ooleanos$ que podem arma5enar valores de verdadeiro e falso. E um copo para caracteres$ que arma5ena caracteres como =c= ou =>=. Em &ava cada um destes copos (f oat! char! on" etc# tem um tamanho espec$fico. *!te o menor de todos e dou)le e long so os maiores. .ssim como usamos mil%metros para medir$ as vari+veis &ava tem seu tamanho medido em )its: )!te ? @ )its short ? AB )its int ? CD )its long BE )its Fodos este inteiros so . G'.H# . # )it mais a esquerda representa o sinal 6positivo ou negativo7 e 'I# parte do valor. Ento$ com A )!te$ por exemplo$ voc no tem @ )its para representar um valor. 2oc tem J. Eles fornecem a voc um ranger 6intervalo7$ para )!tes$ de: 6?D a J7 at 6D a J7 ? A. Korque ?A no final < Korque 5ero est+ dentro do ranger$ e 5ero conta como negativo. 2amos tra)alhar da mesma forma com os outros. float ? CD )its dou)le ? BE )its '9meros de ponto flutuantes seguem o padro GEEE JLE. e voc sa)e o que significa isso$ legal. e no$ tudo )em$ voc apenas ter+ que escrever uma longo dissertao so)re n9meros de ponto flutuante para que eu insira aqui. Esquea. 2amos continuar juntando nossas vari+veis primitivas. char ? AB )its$ 'I# . G'.H# 60ormato ,nicode ?? para o ingls$ perfeitamente mapeado para . "GG com mais de @ )its7

)ooleano ? hmmmm... no precisa pedir. Eles possuem valores verdadeiro ou falso$ mas eles so realmente arma5enados com valores numricos$ provavelmente em um copo de tamanho )!te. Mas no pense nisso. Ftudo o que voc precisa sa)er que eles so um )ooleano. .gora vamos para os copos realmente interessantes...%E&E%'(CIA). Em &ava$ se voc quiser colocar um o)jeto em uma vari+vel$ lem)re?se de que o o)jeto criado fora da +rea de mem(ria 6heap7 eleg%vel para ser coletada pelo gar)age?collector. empre. Ento$ ele no est+ '. vari+vel. 'o existe um copo gigantesco que possa ser feito para conter qualquer o)jeto. E diferente de "/"NN$ no existem copos que contenham a mem(ria exata para alocar ao o)jeto. Em &ava$ ob*etos so criados na memria$ e uma 8E0E8O'"G. a este o)jeto arma5enada em um copo. Kense nisso como um /controle remoto/ para um tipo espec%fico de o)jeto.

'o "offee "orral$ um cliente pode pedir um controle remoto para uma F2$ e ele pede isso da seguinte forma: /Eu gostaria de uma referncia para a nova televiso on!CD$ e o seu nome F2./ Em &ava seria algo como:

#)serve o '#ME escrito no copo. Os copos possuem nomes +nicos. Gmagine se voc tem uma pilha de controles remotos$ e no sa)e qual o controle da F2. Ento n(s fa5emos as pessoas colocarem nomes em seus copos de controle remoto. Mas o nome est+ no o)jeto ?? os o)jetos tem um 9nico GH$ como um n9mero de srie$ mas este no o mesmo nome da refernciaP # nome da referncia 6o nome do copo7 2#"O que escolhe. Q o mesmo para primitivas ?? voc nomeia os copos como: /Eu gostaria de um )!te com o n9mero J e cham+?lo de x$ por favor./

Kara referncia de o)jetos$ voc tam)m pode pedir por um /auto controle remoto/ ... um controle remoto para um o)jeto televiso que ainda no tenha sido escolhido. 2oc ainda tem o controle no copo$ mas voc /programa/ o controle para uma televiso espec%fica mais tarde.

Em &ava voc di5: on!CD tvR // declara$ mas no iniciali5a com o o)jeto atual on!CD.

Gsto est+ di5endo$ /Eu gostaria de uma referncia para televiso on!CD e o nome do controle tv$ mas eu vou escolher a televiso depois./. 2oc tem o copo$ voc tem o controle$ mas no h+ o)jeto e o controle no est+ controlando '.H.. Em Java! um contro e ,ue se refere a nada - uma refer.ncia com o va or nu o (nu #. Ento! o ,ue %EA/0E(1E est dentro do copo < # que um controle remoto< Em &ava$ controles remotos so chamados de referncias. Eles arma5enam um valor no qual a &2M usa para o)ter o seu o)jeto. "ertamente imaginamos que isto como um ponteiro$ e poderia muito )em ser um ponteiro para um ponteiro$ ou... 2oc. no pode saber3 Isto - um deta he de imp ementao ,ue voc.! como pro"ramador! no tem acesso. 'o pense nisso. ( existe este caminho para acessar os mtodos e vari+veis do o)jeto corrente. Esta parte o que fa5 o &ava mais seguro que "/"NN. 2oc no pode ir ar)itrariamente para qualquer parte da mem(ria. . &2M aloca mem(ria para si mesma$ para seus o)jetos e os arma5ena como se fossem um endereo no copo de referncia 6provavelmente seja um copo de CD )it$ mas no h+ garantias de que seja7. e isto o desaponta$respire fundo e tome um grande e agrad+vel copo de ch+ quente. Suando voc comea a fa5er "#8*. voc ser+ grato pelo fato de no ter que tomar cuidado com a mem(ria. Esta est(ria continua com: Kasse?por?valor$ por favor.

"arlos antiago T "&K A.E carlos.santiagoUcajumt.com.)r

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