Você está na página 1de 33

O que esto dizendo sobre Use a Cabea!

A Amazon escolheu Use a


Cabea! Java como Top Ten
Editors Choice for Computer
Books of 2003 (primeira edio)

A Software Development Magazine


indicou Use a Cabea! Java para
finalista do 14th Annual Jolt Cola/
Product Excellence Awards

O livro Use a Cabea! Java, de Kathy e Bert, transformar a pgina impressa na coisa mais prxima de uma GUI que voc
jamais viu. De uma maneira divertida e moderna, os autores tornam o aprendizado de Java uma experincia envolvente do tipo o
que eles vo inventar agora?.
Warren Keuffel, Software Development Magazine
... a nica maneira de saber o valor de um tutorial comprovar se ele eciente em ensinar. Use a Cabea! Java sobressai-se ao ensinar. Certo,
achei infantil, porm percebi que estava entendendo completamente os tpicos enquanto percorria o livro.
O estilo de Use a Cabea! Java tornou o aprendizado, digamos, mais fcil.
slashdot (resenha de um alternativo srio)
Alm do estilo atraente que o conduzir de leigo ao status de defensor exaltado da Java, Use a Cabea! Java aborda vrias
questes prticas que outros livros deixam de lado, como o temvel exerccio para o leitor.... inteligente, ousado, moderno e
prtico - no existem muitos livros que conseguem alegar isso e sustentar a alegao enquanto ensinam a serializao de objetos e
protocolos de inicializao de rede.
Dr. Dan Russell, Diretor do User Sciences and Experience Research IBM Almaden Research Center
(e que ensina Inteligncia Articial na Universidade de Stanford)

rpido, irreverente, divertido e interessante. Tome cuidado - voc pode realmente aprender algo!
Ken Arnold, ex-engenheiro snior da Sun Microsystems
Co-autor de A Linguagem de Programao Java (com James Gosling, criador do Java)

A tecnologia Java est em todos os lugares - se voc for desenvolvedor de softwares e no tiver aprendido Java, denitivamente
chegou a hora de mergulhar - de cabea.
Scott McNealy, Presidente, conselheiro e CEO da Sun Microsystems

Use a Cabea! Java como o Monty Python encontrando a gangue dos quatro O texto to bem dividido por quebracabeas e histrias, testes e exemplos, que voc abordar terreno como em nenhum outro livro de computao.
Douglas Rowe, Grupo de Usurios Java de Columbia

Elogios a Use a Cabea! Java


Leia Use a Cabea! Java e voc passar a experimentar novamente a diverso ao aprender... Para pessoas que gostam de
aprender novas linguagens, e no tm experincia em cincia da computao e programao, este livro uma jia... um livro
que torna divertido o aprendizado de uma linguagem de computador complexa. Espero que haja mais autores querendo deixar o
velho molde dos estilos de escrita tradicionais. Aprender linguagens de computao deve ser divertido e no difcil.
Judith Taylor, Southeast Ohio Macromedia User Group

Se voc quer aprender Java, no procure mais: bem-vindo ao primeiro livro tcnico baseado em GUIs! Este formato inovador
e bem-elaborado fornece benefcios que outros textos sobre Java simplesmente no conseguem... Prepare-se para uma jornada
realmente notvel pelo universo do Java.
Neil R. Bauman, Capito & CEO, Geek Cruises (www.GeekCruises.com)

Se voc for relativamente iniciante em programao e estiver interessado em Java, aqui est seu livro... Abordando tudo, dos

objetos criao de interfaces grcas de usurio (GUI, graphical user interface), da manipulao de excees (erros) s redes
(soquetes) e segmentao mltipla, e at mesmo o empacotamento de sua pilha de classes em um arquivo de instalao, este livro
bem completo... Se voc aprecia esse estilo, estou certo de que amar o livro e, como eu, desejar que a srie Use a Cabea! se
estenda a muitos outros assuntos!
LinuxQuestions.org

Fiquei viciado nos contos, cdigos comentados, entrevistas engraadas e exerccios mentais.
Michael Yuan, autor, Enterprise J2ME

Use a Cabea! Java...d um novo sentido frase de marketing H sempre um OReilly para isso. Adquiri este livro porque
vrias pessoas que respeito o descreveram com termos como revolucionrio, dizendo que era uma abordagem totalmente
diferente para um livro. O resultado engraado, irreverente, atual, interativo e brilhante... Ler este livro como sentar na sala de
espera de uma conferncia, aprendendo e rindo com colegas... Se voc quiser ENTENDER Java, compre-o.
Andrew Pollack, www.thenorth.com

Se h algum no mundo familiarizado com o conceito de Use a Cabea!, provavelmente sou eu. Este livro to bom, que me
casaria com ele na TV!
Rick Rockwell, comediante
O noivo original do programa de televiso da Fox Who wants to marry a millionaire

Esse negcio to estranhamente bom que me faz querer CHORAR! Estou perplexo.
Floyd Jones, autor snior de textos tcnicos/Poolboy, BEA

Alguns dias atrs recebi minha cpia de Use a Cabea! Java de Kathy Sierra e Bert Bates. Li apenas parte do livro, mas o que me
surpreendeu que, mesmo no tendo conseguido dormir naquela primeira noite, me vi pensando: Certo, s mais uma pgina,
ento irei para a cama.
Joe Litton

Elogios a outros livros da srie Use a Cabea! de co-autoria de Kathy e Bert


A Amazon escolheu Use a Cabea!
Servlets como Top Ten Editors
Choice for Computer Books of 2004
(primeira edio)

A Software Development Magazine indicou


Use a Cabea! Servlets e Use a Cabea! Design
Patterns como nalistas do 15th Annual
Product Excellence Awards

Sinto-me como se milhares de livros tivessem sido tirados de cima de minha cabea.
Ward Cunningham, inventor do Wiki e fundador do Hillside Group

Ri, chorei, quei comovido.


Dan Steinberg, editor-chefe, java.net

Minha primeira reao foi rolar no cho de tanto rir. Depois de me refazer, percebi que este livro no apenas altamente
preciso, e sim que se trata da melhor obra de introduo j publicada sobre padres de projeto.
Dr. Timothy A. Budd, professor associado de cincia da computao na Universidade do Estado do
Oregon e autor de vrios livros, inclusive C++ for Java programmers

O tom preciso para o codicador genial e casual guru que existe em todos ns. A obra de referncia certa para estratgias
prticas de desenvolvimento este livro me fez acompanhar o assunto sem a necessidade de agentar a ultrapassada e cansativa
ladainha acadmica.
Travis Kalanick, fundador do Scour and Red Swoosh e membro do MIT TR100

FINALMENTE um livro sobre Java escrito da maneira que eu escolheria se eu fosse eu mesmo. Falando srio este livro
denitivamente deixa para trs qualquer outro livro sobre software que j li... Um bom livro muito difcil de escrever;
preciso muito tempo para deixar as coisas se desdobrarem em uma seqncia natural, orientada ao leitor. muito trabalhoso.
A maioria dos autores claramente no est altura do desao. Parabns equipe do Use a Cabea! EJB por um trabalho de
primeira classe!
Wally Flint

No poderia imaginar uma pessoa sorrindo ao estudar um livro de TI! Usando os materiais do Use a Cabea! EJB, acertei
bastante (91%) e consegui um recorde mundial como o mais jovem SCBSD, 14 anos.
Afsah Shafquat (SCBCD mais jovem do mundo)

O livro Use a Cabea! Servlets to bom quanto o Use a Cabea! EJB, que me fez rir E acertar 97% do exame!
Jef Cumps, consultor de J2EE, Cronos

Outros ttulos da Srie Use a Cabea!


Use
Use
Use
Use
Use
Use
Use
Use
Use
Use
Use
Use
Use
Use
Use
Use
Use

a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a

Cabea
Cabea
Cabea
Cabea
Cabea
Cabea
Cabea
Cabea
Cabea
Cabea
Cabea
Cabea
Cabea
Cabea
Cabea
Cabea
Cabea

Java
Anlise & Projeto Orientado a Objetos (A&POO)
Ajax Iniciao Rpida
HTML com CSS e XHTML
Padres de Projeto
Servlets e JSP
PMP
SQL
Desenvolvimento de Software
JavaScript
C#
PHP & MySQL (2009)
Fsica (2009)
Algebra (2009)
Ajax Profissional (2009)
Estatstica (2009)
Ruby on Rails (2009)

Use a Cabea! JavaTM


Traduo da
segunda edio
No seria maravilhoso um livro sobre
Java que fosse mais interessante do
que esperar na la do DETRAN para
renovar sua carteira de habilitao?
Talvez seja apenas um sonho...

Kathy Sierra
Bert Bates

Rio de Janeiro 2010

nossa mente, por estar sempre presente


(apesar de qualquer prova em contrrio)

Criadores da srie Use a Cabea!

Kathy Sierra

Kathy tem interesse no ensino de teoria desde quando


era projetista de jogos (criou jogos para a Virgin, MGM e
Amblin). Ela desenvolveu grande parte do formato Use
a Cabea! enquanto ensinava Criao em Nova Mdia
no programa de extenso em Estudos de Entretenimento
da UCLA. Recentemente foi instrutora mestre na Sun
Microsystems, preparando os professores da Sun para ensinar
as tecnologias Java mais novas, e foi a principal criadora de
vrios exames de certicao da Sun para programadores
e desenvolvedores Java. Junto com Bert Bates, tem usado
ativamente os conceitos do Use a Cabea! Java para
instruir centenas de professores, desenvolvedores e at noprogramadores. Tambm foi a fundadora de um dos maiores
sites Web de comunidade Java do mundo, o javaranch.com, e
do blog Creating Passionate Users.
Alm deste livro, Kathy foi co-autora de Use a Cabea!
Servlets, Use a Cabea! EJB e Use a Cabea! Design Patterns.
Em seu tempo livre ela aprecia seu novo cavalo islands, gosta
de esquiar, correr e da velocidade da luz.

kathy@wickedlysmart.com

Bert Bates

Bert desenvolvedor e projetista de softwares, mas a


experincia de uma dcada em inteligncia articial direcionou
seu interesse para o ensino de teoria e para treinamentos
baseados em tecnologia. Desde ento tem ensinado
programao para clientes. Recentemente, foi membro da
equipe de desenvolvimento de vrios exames de certicao
em Java da Sun.
Ele passou a primeira dcada de sua carreira em softwares
viajando pelo mundo para ajudar clientes de radiodifuso
como a Radio New Zealand, o Weather Channel e a Arts &
Entertainment Network (A & E). Um de seus projetos favoritos
foi construir a simulao completa de um sistema de ferrovias
para a Union Pacic Railroad.
Bert um adepto inveterado do player GO e h muito tempo
trabalha em um programa Go. Ele um guitarrista razovel
que agora passou para o banjo e gosta de se divertir esquiando,
correndo e tentando adestrar (ou ser adestrado por) seu cavalo
islands Andi.
Bert foi co-autor dos mesmos livros que Kathy e est
trabalhando muito na prxima remessa (consulte o blog para
ver as atualizaes).
Voc pode encontr-lo no servidor Go IGS (sob o login
jackStraw).

terrapin@wickedlysmart.com

Embora Kathy e Bert tentem responder o mximo possvel de mensagens de correio eletrnico, o volume de correspondncia e sua agenda de viagens torna isso
difcil. A melhor (mais rpida) maneira de obter ajuda tcnica com relao ao livro no bastante ativo frum de iniciantes Java em javaranch.com.

Contedo (Sumrio)
Introduo
1

Aprofundando-se

xx
1

Uma Viagem at Objetpolis

21

Conhea suas variveis

37

Como os objetos se comportam

53

Mtodos extra fortes

71

Usando a Biblioteca Java

Melhor viver em Objetpolis

125

Polimorsmo Real

147

Vida e morte de um objeto

173

10 Os nmeros so importantes

199

11 Comportamento arriscado

227

12 Uma histria muito grca

253

13 Trabalhe em seu swing

283

14 Salvando objetos

303

15 Crie uma conexo

333

16 Estrutura da dados

373

17 Lance seu cdigo

407

18 Computao distribuda

423

Apndice A: Receita de cdigo nal

455

Apndice B: Os dez principais tpicos que quase entraram no livro

463

ndice remissivo

475

95

ix

Sumrio
Introduo

Seu crebro e o Java. Aqui est voc tentando aprender algo, enquanto o seu crebro
est lhe fazendo o favor de garantir que o aprendizado no vingue. Seu crebro est
pensando melhor deixar espao para coisas mais importantes, como que animais
selvagens evitar e se praticar snowboard pelado uma m idia. Portanto, como voc far o
seu crebro pensar que sua vida depende do que voc conhecer a respeito do Java?
xx

Para quem este livro?

xx

Sabemos o que o seu crebro est pensando.


Metacognio

xxii

Veja o que fazer para que o seu crebro se curve em sinal de submisso

xxiii

Requisitos deste livro

xxiv

Editores tcnicos

xxvi

Agradecimentos

xxviii

Aprofundando-se
O Java o levar a novas fronteiras. No humilde lanamento para o pblico como

a (suposta) verso 1.02, o Java seduziu os programadores com sua sintaxe amigvel,
recursos orientados a objetos, gerenciamento de memria e, o melhor de tudo a promessa
de portabilidade. Examinaremos isso rapidamente e escreveremos, compilaremos e
executaremos alguns cdigos. Falaremos sobre a sintaxe, loops, ramicaes e o que torna
o Java to interessante. Mergulhe.
Como a Java funciona
Estrutura do cdigo em Java

Method Party()
0 aload_0
1 invokespecial#1<Method
java.lang.Object()>
4 return

Anatomia de uma classe


O mtodo main( )
Loops
Ramicao condicional (testes if)
Codicando o aplicativo 99 garrafas de cerveja

Bytecode compilado

Parafraseando
Mquinas virtuais

Conversa Informal: compilador vs. JVM


Exerccios e quebra-cabeas

2
Dog
size
race
name

7
8
10
10
11
14
14
16

Ouvi dizer que haveria objetos. No Captulo 1, colocamos todo o cdigo no mtodo
main( ). Essa no exatamente uma abordagem orientada a objetos. Portanto, agora temos
que deixar esse universo procedimental para trs e comear a criar alguns objetos por nossa
prpria conta. Examinaremos o que torna o desenvolvimento orientado a objetos (OO, objectoriented) em Java to divertido. Discutiremos a diferena entre uma classe e um objeto.
Examinaremos como os objetos podem melhorar sua vida.
uma classe

muitos
objetos
introduo

Uma viagem at Objetpolis

bark( )

Guerra nas Cadeiras (Brad O Adepto de OO vs. Larry O Usurio de Procedimentos)

22

Herana (uma introduo)

24

Sobrepondo mtodos (uma introduo)

25

O que existe em uma classe (mtodos, variveis de instncia)?

27

Criando seu primeiro objeto

28

Usando main( )

29

Cdigo do Jogo de Adivinhao

30

Exerccios e quebra-cabeas

33

Conhea suas variveis


Existem duas verses de variveis: primitivas e de referncia. Deve haver mais
coisas na vida alm de inteiros, strings e matrizes. E se voc tiver um objeto DonodeAnimal
com uma varivel de instncia Co? Ou um Carro com um Motor? Neste captulo
desvelaremos os mistrios dos tipos usados no Java e examinaremos o que voc pode
declarar como uma varivel, o que pode inserir em uma varivel e o que pode fazer com ela. E
para concluir discutiremos o que acontece realmente na pilha de lixo coletvel.

24
size

int
do
referncia
de objeto

Declarando uma varivel (no Java h a preocupao com o tipo)

38

Tipos primitivos (Quero um duplo com espuma, por favor)

38

Palavras-chave no Java

40

Variveis de referncia (controle remoto de um objeto)

41

Declarao atribuio de objeto

43

Objetos na pilha de lixo coletvel

44

Matrizes (uma introduo)

45

Exerccios e quebra-cabeas

49

Como os objetos se comportam

4
Passar
por valor
signi ca
passar por
cpia
1
01
00
0
00

O estado afeta o comportamento, o comportamento afeta o estado. Sabemos


que os objetos tm estado e comportamento, representados pelas variveis de instncia e
mtodos. Agora examinaremos como o estado e o comportamento esto relacionados. O
comportamento de um objeto usa um estado exclusivo dele. Em outras palavras, os mtodos
usam os valores das variveis de instncia. Por exemplo Se o co pesar menos de 27 quilos,
grite de alegria, caso contrrio.... Alteremos alguns estados!
cpia de x
11
00
00
0
0

int

int
void go(intz) { }

foo.go(x);

Os mtodos usam o estado do objeto (latir diferente)

54

Os argumentos e tipos de retorno do mtodo

55

Passar por valor (a varivel sempre copiada)

57

Mtodos de captura e congurao

58

Encapsulamento (use-o ou arrisque-se a ser humilhado)

59

Usando referncias em uma matriz

62

Exerccios e quebra-cabeas

65

Mtodos extra fortes

Aumentemos a fora de nossos mtodos. Voc apredeu sobre as variveis, brincou


com alguns objetos e escreveu um pequeno cdigo. Mas precisa de mais ferramentas. Como
os operadores. E os loops. Pode ser til gerar nmeros aleatrios. E converter uma string em
um inteiro, sim, isso seria avanado. E por que no aprender tudo atravs da criao de algo
real, para vermos como escrever (e testar) um programa a partir do zero. Talvez um jogo,
como o Sink a Dot Com (semelhante Batalha Naval).

Construiremos o jogo Sink a Dot Com

Construindo o jogo Sink a Dot Com

72

Comeando com o jogo Sink a Dot Com simples (uma verso mais simples)

73

Escrevendo o cdigo preparatrio (pseudocdigo do jogo)

76

Cdigo de teste do Dot Com simples

78

Codicando o jogo Dot Com simples

79

Cdigo nal do Dot Com simples

81

Gerando nmeros aleatrios com Math.random( )

85

Cdigo predenido para obteno de entradas do usurio a partir da linha...

86

Iterando com loops for

87

AskMe.com

Convertendo tipos primitivos extensos para um tamanho menor

90

Exerccios e quebra-cabeas

90

C
D

Go2.com

Pets.com

E
F
G
0

xi

Usando a biblioteca Java

O Java vem com centenas de classes predenidas. Voc no ter que reinventar a roda
se souber como encontrar o que precisa na biblioteca Java, normalmente conhecida como API
Java. H coisas melhores a fazer. Se voc pretende escrever cdigos, pode escrever somente as
partes que forem exclusivas de seu aplicativo. A principal biblioteca Java consiste em uma pilha
gigante de classes apenas esperando para serem usadas como blocos de construo.

Bom saber que h uma


ArrayList no pacote java.
util. Mas como poderia
descobrir isso sozinha?

Analisando o erro do jogo Dot Com simples

-Julia, 31, modelo de


trabalho manual

96

ArrayList (beneciando-se da API Java)

99

Corrigindo o cdigo da classe DotCom

104

Construindo o jogo real (Sink a Dot Com)

105

Cdigo preparatrio do jogo real

109

Cdigo do jogo real

110

Expresses booleanas

114

Usando a biblioteca (API Java)

116

Usando pacotes (instrues importantes, nomes totalmente qualicados)

116

Usando os documentos e livros de referncia do API HTML

119

Exerccios e quebra-cabeas

122

Melhor viver em Objetpolis

7
Torne f
cil

Planeje seus programas com o futuro em mente. E se voc pudesse escrever cdigos
que outra pessoa conseguisse estender, facilmente? E se pudesse escrever cdigos que fossem
exveis, para aquelas irritantes alteraes de ltimo minuto nas especicaes? Quando chegar
ao Plano de Polimorsmo, voc aprender as 5 etapas para a obteno de um projeto de classes
mais adequado, os 3 truques do polimorsmo, as 8 maneiras de criar um cdigo exvel e, se agir
agora uma lio bnus sobre as 4 dicas para a explorao da herana.

O Java
passa
por
valor

lembra
r

segmen
to
wait() s

Wash

Cat
notify
()
Rosas
s
O quad o vermelha
rado
-UMA s, violetas
Rosas
fo
s
A cerv o vermelha rma, o op so azuis.
osto
eja s, a
em
vi
UMA be
Certo,
bida, oleta quer inverdade
se tr
id
mas ne
su
a
aduz.
ve
do re
m toda a seja.
lacion z. Crie um
s as
amento
Y, X
a rima
bebida
-UM
s so
Y deve -Um. Lemb que demo
cervej
ns
re
fazer
tr
a.
sentid -se de que e a via n
o.
ic
se X
estend a
e

Entendendo a herana (relacionamentos da superclasse e subclasse)

127

Projetando uma rvore de herana (a simulao da classe Animal)

129

Evitando a duplicao de cdigo (usando a herana)

129

Sobrepondo mtodos

130

-UM e TEM-UM (garota na banheira)

132

O que voc herdar de sua superclasse?

135

O que a herana lhe fornecer realmente?

136

Polimorsmo (usando a referncia de um supertipo a um objeto da subclasse)

137

Regras da sobreposio (no mexa nesses argumentos e tipos de retorno!)

140

Sobrecarga do mtodo (nada mais do que a reutilizao do nome do mtodo)

141

Exerccios e quebra-cabeas

142

Polimorsmo real

A herana apenas o comeo. Para explorar o polimorsmo, precisamos de


interfaces. Temos que ir alm da simples herana e alcanar a exibilidade que voc s
conseguir projetando e codicando em interfaces. O que uma interface? Uma classe
100% abstrata. O que uma classe abstrata? Uma classe que no pode ser instanciada,
Em que isso til? Leia o captulo...

Object o = al.get(index);
Dog d = (Dog) o;
d.roam();
Objeto
objeto

d
Dog

xii

Converta a classe Object


em uma classe Co que voc
sabe que existe.

Algumas classes simplesmente no devem ser instanciadas

149

Classes abstratas (no podem ser instanciadas)

150

Mtodos abstratos (devem ser implementados)

151

O polimorsmo em ao

153

Classe Object (a superclasse nal de tudo)

154

Extraindo objetos de uma ArrayList (eles so capturados com o tipo Object)

155

O compilador verica o tipo de referncia (antes de permitir que voc chame um mtodo)

157

Entrando em contato com seu objeto interno

158

Referncias polimrcas

159

Convertendo uma referncia de objeto (passando mais para baixo na rvore de herana)

160

Losango Fatal (problema de herana mltipla)

164

Usando interfaces (a melhor soluo!)

164

Exerccios e quebra-cabeas

169

Vida e morte de um objeto


Objetos nascem e objetos morrem. Voc quem manda. Voc decide quando e como
constru-los. Decide quando abandon-los. O Coletor de Lixo (gc, garbage collector) solicita
memria. Examinaremos como os objetos so criados, onde residem e como manter ou
abandon-los ecientemente. Isso signica que falaremos sobre o heap, a pilha, o escopo,
construtores, superconstrutores, referncias nulas e qualicao para o gc.

Quando algum chamar o mtodo go(),


esse objeto Duck ser abandonado.
Sua nica referncia foi reprogramada
para um objeto Duck diferente.

d
Heap

d recebeu um novo objeto Duck, deixando


o objeto Duck original (o primeiro)
abandonado. Agora esse primeiro objeto
pode ser considerado eliminado.

A pilha e o heap onde os objetos e as variveis residem

174

Mtodos da pilha

174

Onde as variveis locais residem

175

Onde as variveis de instncia residem

176

O milagre da criao de objetos

177

Construtores (o cdigo que ser executado quando voc usar new)

177

Inicializando o estado de um novo objeto Duck (Pato)

179

Construtores sobrecarregados

181

Construtores de superclasse (cadeia de construtores)

184

Chamando construtores sobrecarregados usando this( )

186

A vida de um objeto

189

Coleta de Lixo (e como tornar os objetos qualicados)

191

Exerccios e quebra-cabeas

196

Os nmeros so importantes

10

Faa o clculo. O API Java tem mtodos para valor absoluto, arredondamento, min/max,
etc. Mas e quanto formatao? Voc pode querer que os nmeros sejam exibidos apenas
com duas casas decimais ou com pontos em todos os locais corretos. E pode querer exibir
e manipular datas, tambm. E quanto converso de uma string em um nmero? Ou a
converso de um nmero em uma string? Comearemos aprendendo o que signica para
uma varivel ou mtodo ser esttico.

Variveis estticas so compartilhadas


por todas as instncias de uma classe.
primeira instncia segunda instncia
de kid (criana)
varivel esttica: de kid
iceCream (sorvete)

Classe Math (voc precisa realmente de uma instncia dela?)

200

Mtodos estticos

201

Variveis estticas

204

Constantes (variveis estticas nais)

206

Mtodos de Math (random( ), round( ), abs( ), etc.)

209

Classes encapsuladoras (Integer, Boolean, Character, etc.)

209

Auto-insero

209

Formatao de nmeros

214

Formatao e manipulao de datas

219

Importaes estticas

222

Exerccios e quebra-cabeas

224

Variveis de instncia: uma por instncia


Variveis estticas: uma por classe
xiii

Comportamento arriscado

11

Problemas acontecem. O arquivo no est no local. O servidor est travado.


Independentemente de quanto voc bom em programao, no possvel controlar
tudo. Quando criar um mtodo perigoso, precisar de um cdigo para manipular o que
acontecer de errado. Mas como saber quando um mtodo perigoso? Onde inserir o
cdigo que manipular a situao excepcional? Neste captulo, construiremos um MIDI
Music Player, que usar o perigoso API JavaSound, portanto, melhor descobrirmos.

lana uma exceo


2
1

seu
cdigo

classe
com um
mtodo
perigoso

chama um
mtodo
perigoso

Criando um aparelho de som (como o BeatBox)

228

E se voc tiver que chamar o cdigo perigoso?

230

Excees dizem algo inadequado pode ter ocorrido...

230

O compilador garantir (ele vericar) que voc que ciente dos riscos

231

Capturando excees usando uma instruo try/catch (skatista)

232

Controle do uxo em blocos try/catch

235

O bloco nally (no importa o que acontea, desligue o forno!)

235

Capturando vrias excees (a ordem importante)

237

Declarando uma exceo (apenas desvie)

241

Manipule ou declare como lei

242

Receita de cdigo (emitindo sons)

243

Exerccios e quebra-cabeas

249

Uma histria muito grca

12

Encare a realidade, voc precisa criar GUIs. Mesmo se acredita que durante o
resto de sua vida escrever somente cdigo no lado do servidor, cedo ou tarde ter que
criar ferramentas e vai querer uma interface grca. Dedicaremos dois captulos s GUIs e
aprenderemos mais sobre determinados recursos de linguagem, inclusive a Manipulao de
Eventos e as Classes Internas. Inseriremos um boto na tela, pintaremos a tela, exibiremos
uma gura jpeg e trabalharemos ate mesmo com um pouco de animao.

class MyOuterClass {
private int x;

Sua primeira GUI

254

class MyInnerClass {
void go() {
x=42;
}
} //fecha a classe interna

Capturando um evento de usurio

256

Implemente uma interface ouvinte

256

Capturando o evento ActionEvent de um boto

258

Inserindo guras em uma GUI

260

Diverso com paintComponent( )

261

int x

} //fecha a classe externa

string s
Agora os objetos externo e
interno esto intimamente
ligados.

outer O objeto Graphics2D


inner

Esses dois objetos do heap tm uma ligao


especial. O objeto interno pode usar as
variveis do objeto externo (e vice-versa).

262

Inserindo mais de um boto em uma tela

265

Classes internas ao resgate (torne seu ouvinte uma classe interna)

268

Animao (mova-a, pinte-a, mova-a, pinte-a, mova-a, pinte-a...)

272

Receita de cdigo (pintando guras ao ritmo de msica)

275

Exerccios e quebra-cabeas

280

Trabalhe em seu Swing

13
xiv

O Swing fcil. A menos que voc se importe realmente com o local de cada elemento. O
cdigo Swing parece fcil, mas depois de compilar, executar e examin-lo nos damos conta
disto: ei, isso no deveria estar a. O que torna fcil a codicao o que torna difcil o
controle o Gerenciador de Layout. Mas com um pouco de esforo, voc pode fazer os
gerenciadores de layout se curvarem a sua vontade. Neste captulo, trabalharemos em nosso
Swing e aprenderemos mais sobre os elementos grcos.
Componentes do Swing

284

Gerenciadores de Layout (eles controlam o tamanho e o local)

284

Trs Gerenciadores de Layout (borda, uxo, caixa)

286

Os elementos das
partes superior
e inferior ficaram
com a altura
selecionada.
Os componentes
da esquerda e da O centro ficar
direita ficaram com o que sobrar
com a largura
selecionada.
North

West

Center

East

BorderLayout (controla cinco regies)

286

FlowLayout (controla a ordem e o tamanho preferido)

288

BoxLayout (como no uxo, mas pode empilhar componentes verticalmente)

290

JTextField (para entrada de usurio de uma linha)

292

JTextArea (para texto de rolagem de vrias linhas)

292

JCheckBox (foi feita a seleo?)

293

JList (uma lista de seleo rolvel)

294

Receita de cdigo (O cdigo completo construindo o cliente de bate-papo BeatBox)

295

Exerccios e quebra-cabeas

299

South

Salvando objetos
Os objetos podem ser achatados e reconstitudos. Os objetos possuem estado

14

e comportamento. O comportamento reside na classe, mas o estado reside dentro de cada


objeto. Se o seu programa tiver que salvar o estado, voc poder faz-lo da maneira mais
difcil, examinando cada objeto e gravando meticulosamente o valor de cada varivel de
instncia. Ou, da maneira mais fcil, orientada a objetos simplesmente congele o objeto
(serialize-o) e reconstitua-a (desserialize), para que volte ao que era.

serializado
Alguma
pergunta?

desserializado

Salvando o estado do objeto

304

Gravando um objeto serializado em um arquivo

305

Fluxos Java de entrada e sada (conexes e encadeamentos)

306

Serializao de objeto

307

Implementando a interface Serializable

308

Usando variveis transientes

310

Desserializando um objeto

311

Gravando em um arquivo de texto

314

java.io.File

318

Lendo em um arquivo de texto

319

Dividindo uma string em chas com split( )

322

Receita de cdigo

326

Exerccios e quebra-cabeas

328

Crie uma conexo

15

Conecte-se com o ambiente externo. fcil. Todos os detalhes de nvel inferior de


rede so denidos pelas classes na biblioteca java.net. Um dos melhores recursos do Java
que enviar e receber dados atravs de uma rede realmente apenas uma atividade de
E/S com um uxo de conexo um pouco diferente na extremidade da cadeia. Neste captulo
criaremos soquetes de cliente. Criaremos soquetes de servidor. Criaremos clientes e
servidores. Antes do m do captulo, voc ter um cliente de bate-papo totalmente funcional
com vrios segmentos. Dissemos com vrios segmentos?

Conexo de soquete com a porta


5000 para o servidor de
endereo 196.164.1.103.

Cliente

Servidor

Conexo de soquete retornando


ao cliente de endereo
196.164.1.100, porta 4242.

Viso geral do programa de bate-papo

334

Conectando, enviando e recebendo

335

Soquetes de rede

336

Portas TCP

336

Lendo dados em um soquete (usando BufferedReader)

338

Gravando dados em um soquete (usando PrintWriter)

339

Escrevendo o programa Daily Advice Client

340

Criando um servidor simples

341

Cdigo do Daily Advice Server

341

Criando um cliente de bate-papo

343

Vrias pilhas de chamada

347

Iniciando um novo segmento (crie-o, inicie-o)

347
xv

Use a Cabea Java

A interface Runnable (a tarefa do segmento)

348

Trs estados de um novo objeto Thread (novo, executvel, em execuo)

349

O loop executvel em execuo

350

Agendador de segmentos ( ele quem decide e no voc)

350

Colocando um segmento em suspenso

353

Criando e iniciando dois segmentos

354

Problemas de concorrncia: esse casal pode ser salvo?

355

O problema de concorrncia de Ryan e Mnica, em cdigo

356

Bloqueando para gerar atomicidade

359

Todo objeto tem um bloqueio

360

O temvel problema da Atualizao Perdida

360

Mtodos sincronizados (usando um bloqueio)

362

Impasse!

363

Cdigo de ChatClient com vrios segmentos

365

Cdigo predenido para SimpleChatServer

366

Exerccios e quebra-cabeas

369

Estruturas de dados

16

A classicao instantnea em Java. Voc tem todas as ferramentas para coletar


e manipular dados sem ter que escrever seus prprios algoritmos de classicao. O Java
Collections Framework tem uma estrutura de dados que deve funcionar para praticamente
qualquer coisa que voc precisar fazer. Quer manter uma lista que voc possa aumentar
facilmente? Encontrar algo pelo nome? Criar uma lista que exclua automaticamente todos os
dados repetidos? Classicar seus colaboradores por quantas vezes lhe traram?
Conjuntos

374

Classicando como ArrayList com Collections.sort( )

376

Dados genricos e garantia de tipo

380

Classicando itens que implementam a interface Comparable

385

Classicando itens com um comparador personalizado

388

O API de conjuntos listas, conjuntos e mapas

392

Evitando dados repetidos com HashSet

392

Sobrepondo hashCode( ) e equals( )

394

HashMap

398

Usando curingas para gerar polimorsmo

403

Exerccios e quebra-cabeas

404

Lance seu cdigo


hora de pr em prtica. Voc escreveu seu cdigo. Testou o cdigo. Aprimorou-o. Voc

17

contou para todo mundo que conhece que, se nunca se deparar com uma linha de cdigo
novamente, no haver problema. Mas, no m das contas, ter criado uma obra de arte. O negcio
funciona mesmo! Porm, fazer o que agora? Nesses dois ltimos captulos, estudaremos como
organizar, empacotar e implantar seu cdigo Java. Examinaremos opes de implantao local,
semilocal e remota, incluindo arquivos jar executveis, o Java Web Start, RMI e Servlets. Calma.
Alguns dos recursos mais interessantes em Java so mais fceis de usar do que voc imagina.

class

com

foo
MyApp.jar
MyApp.class
xvi

introduo

Opes de implantao

408

Mantenha os arquivos de seu cdigo-fonte e de suas classes separados

409

Criando um arquivo JAR (Java ARchives) executvel

410

Processando um arquivo JAR executvel

411

Insira suas classes em um pacote!

411

Os pacotes devem ter uma estrutura de diretrio adequada

412

Compilando e executando com pacotes

413

Compilando com -d

Web Serve

Criando um arquivo JAR executvel (com pacotes)

414

O Java Web Start (JWS) para a implantao na Web

415

Como criar e implantar um aplicativo JWS

419

Exerccios e quebra-cabeas

421
421

Computao distribuda
Trabalhar remotamente no precisa ser ruim. Certo, as coisas so mais fceis quando

18
Cliente

todas as partes do aplicativo esto em um local, em um heap, com um JVM para regular
tudo. Mas nem sempre isso possvel. Ou desejvel. E se seu aplicativo manipular clculos
poderosos? E se ele precisar de dados de um banco de dados seguro? Neste captulo,
aprenderemos a usar o surpreendentemente simples Remote Method Invocation (RMI) do Java.
Tambm examinaremos rapidamente os Servlets, os Enterprise Java Beans (EJB) e o Jini.
Servidor
O Remote Method Invocation (RMI) do Java, na prtica, bem detalhado

426

Servlets (uma viso rpida)

437

Enterprise Java Beans (EJB), uma viso muito rpida

442

Jini, o melhor entre todos os truques

443

Construindo o navegador universal de servios realmente avanado

445

O Fim

454

Apndice A
O projeto nal da receita de cdigo. O cdigo completo do beat box de bate-papo
cliente-servidor. Sua chance de ser uma estrela do rock.
BeatBoxFinal (cdigo cliente)

456

MusicServer (cdigo servidor)

460

groove
Andy:
#2
2
groove
Chris:
d
revise
dance
Nigel:
beat

Apndice B
Os dez principais itens que no apareceram no livro. Ainda no podemos solt-lo
no mundo. Temos mais algumas coisas para voc, mas aqui que acaba o livro. E dessa vez
verdade.
Lista dos dez mais

ndice Remissivo

464

475

xvii

Como usar este livro


Introduo
No posso acreditar que eles
colocaram isto em um livro de
programao Java!

rigante:
demos a pergunta int
o em Java?
Nesta seo, respcolonoca
a
am
ogr
pr
de
ro
liv
um
em
o
ist
m
ra
Mas por que eles

A quem se destina este livro?


Se voc puder responder sim a todas estas perguntas:
1

Voc j programou?

Quer aprender Java?

Prefere conversas estimulantes na hora do jantar a palestras secas,


chatas e tcnicas?

Ento este livro destinado a voc.

Quem provavelmente deve ficar longe deste livro?

Este no uma
obra de referncia.
Use a Cabea! Java
um livro projetado
para aprendizado,
no uma
enciclopdia de
fatos sobre a Java.

Se voc puder responder sim a qualquer das perguntas a seguir:


1

Sua experincia em programao se limita somente HTML, sem nenhum


contato com linguagens de script?
(Se voc j fez algo com loops ou lgica if/then, conseguir se virar
com este livro, mas somente tags HTML podem no ser o su!ciente.)

Voc um bom programador de C++ procurando um livro de referncia?

Voc tem medo de tentar algo diferente? Prefere fazer um tratamento de


canal a misturar listras e xadrez? Acredita que um livro tcnico no
pode ser srio se houver a !gura de um pato na seo de gerenciamento
da memria?

Ento este livro no para voc.

[Nota do pessoal de marketing: quem retirou a parte sobre como este livro serve para qualquer pessoa com um
carto de crdito vlido? E quanto promoo de frias D uma Java de presente que discutimos... Fred.]
Sabemos em que voc est pensando.
Como isto pode ser um livro srio de programao Java?
Para que todas as guras?
Conseguirei aprender realmente dessa forma?
Estou sentindo cheiro de pizza?

Sabemos o que o seu crebro est pensando.


Seu crebro procura novidade. Est sempre procurando, pesquisando, esperando por algo incomum. Ele
foi gerado assim e o ajuda a permanecer vivo.
Atualmente, h menos probabilidades de voc se tornar o almoo de um tigre. Mas seu crebro ainda est
procurando. S que voc no sabe.
Mas o que seu crebro faz com toda as coisas rotineiras, comuns e cotidianas que voc encontra? O
possvel para evitar que interram em sua verdadeira tarefa gravar as coisas que interessam. No
interessa gravar as coisas irrelevantes; elas nunca passam pelo ltro claro que isso no importante.
Como seu crebro sabe o que importante? Suponhamos que voc saia para a sua caminhada diria e um
tigre salte em sua frente; o que aconteceria dentro de sua cabea?
Acionamento dos neurnios. Ativao das emoes. Exploso qumica.
E assim que seu crebro ca sabendo...

Isso deve ser importante! No esquea!


Mas imagine se voc estivesse em casa, ou em uma biblioteca. um local seguro, aconchegante, sem tigres.
Voc est estudando. Preparando-se para um exame. Ou tentando aprender algum assunto tcnico difcil, algo
que o seu chefe acha que vai levar uma semana, dez dias no mximo.
S h um problema. Seu crebro est tentando lhe fazer um grande favor. Est tentando se certicar de que esse
contedo obviamente irrelevante no use recursos escassos. Recursos que seriam melhor utilizados no armazenamento

Seu crebro
acha que ISSO
importante.

das coisas realmente importantes. Como os tigres.


Como o perigo de incndio. Como voc nunca tentar
praticar novamente snowboard de short.
E no h uma maneira simples de dizer a seu
crebro: Ei, crebro, muito obrigado, mas,
independentemente de o quanto esse livro seja chato,
e de como eu estou registrando esse fato em um nvel
baixo na escala Richter emocional nesse momento,
quero realmente que voc guarde isso.

Seu crebro acha


que no vale a pena
guardar ISSO.

timo. Somente
mais 437 pginas
chatas, irrelevantes
e montonas.

Pensamos no leitor de Use a Cabea! Java como um aprendiz.


Mas o que necessrio para aprender algo? Primeiro, voc tem que captar, depois se
certicar de que no vai deixar isso escapar. No apenas empurrar os fatos para dentro de
sua cabea. Com base nas pesquisas mais recentes da cincia cognitiva, da neurobiologia e da
psicologia educacional, preciso muito mais para se aprender do que apenas texto em uma
pgina. Sabemos o que interessa ao seu crebro.

Alguns dos princpios de aprendizagem da srie Use a Cabea!:


Destaque o aspecto visual. As guras so muito mais fceis de
memorizar do que palavras isoladas e tornam o aprendizado mais ecaz
(at 89% de melhoria em estudos de lembrana e transferncia de
conhecimento). Tambm tornam as coisas mais inteligveis. Coloque
as palavras dentro ou perto da gura s quais esto relacionadas, em
vez de embaixo ou em outra pgina, e os aprendizes caro duas vezes
mais aptos do que o normal a resolver problemas referentes ao contedo.

preciso chamar um
mtodo no servidor
doCalc( )

valor de
retorno

Servio RMI
remoto

Use um estilo coloquial e personalizado. Em estudos recentes, alunos se saram at 40% melhor em testes ps-aprendizado
quando o contedo se comunicava diretamente com o leitor, usando um estilo coloquial em primeira pessoa em vez de adotar
um tom formal. Contar histrias em vez de proferir
palestras. Usar linguagem casual. No se leve to a
muito chato
Faz sentido dizer Uma
ser um mtodo
srio. Em quem voc prestaria mais ateno: em uma
Banheira -UM Banheiro?
abstrato. No se
companhia estimulante no jantar ou em uma palestra?
Ou um Banheiro -UMA
tem um corpo.

Faa o aprendiz pensar com mais anco. Em outras


palavras, a menos que voc exione seus neurnios
ativamente, no acontecer muita coisa em sua cabea.
Um leitor tem que estar motivado, engajado, curioso
e inspirado a resolver problemas, tirar concluses e
gerar novos conhecimentos. E, para que isso ocorra,
voc precisa de desaos, exerccios e perguntas que
instiguem o pensamento, alm de atividades que
envolvam os dois lados do crebro e vrios sentidos.

abstr
act v
oid r
oam(
):

Banheira? Ou trata-se de um
relacionamento TEM-UM?

Faz sentido dizer que a banheira -UM banheiro?


Que o banheiro -UMA banheira? Ou trata-se de um
relacionamento TEM-UM?

Prenda e mantenha presa a ateno do leitor.


Todos ns j tivemos uma experincia do tipo quero
realmente aprender isso, mas no consigo car
acordado aps a pgina um. Seu crebro presta
ateno em coisas que so fora do comum, interessantes, estranhas, atraentes, inesperadas.
Aprender sobre um assunto tcnico novo e difcil no precisa ser chato. O crebro aprender muito mais rapidamente se no o for.

Sem corpo no mtodo! Termine-o


com um ponto-e-vrgula

Toque as emoes deles. Agora sabemos que sua habilidade de se lembrar de algo depende muito do contedo
emocional. Voc se lembrar do que lhe preocupar. Lembrar quando sentir algo. No estamos falando de histrias
dramticas sobre um menino e seu cachorro. Estamos falando de surpresa, curiosidade, diverso, de pensamentos do
tipo mas o que isso? e do sentimento sou mais eu! que surge quando voc resolve um enigma, aprende algo que as
outras pessoas acham difcil ou percebe que sabe algo que Bob sou mais tcnico que voc da engenharia no sabe.

Metacognio: entendendo o pensamento.


Se voc quiser realmente aprender, e quiser faz-lo mais rpida e ecientemente, preste
ateno em como sua ateno atrada. Pense em como voc pensa. Entenda como aprende.

Estou pensando
em como vou fazer
meu crebro se
lembrar disso...

Quase ningum fez cursos de metacognio ou teoria do aprendizado quando estava


crescendo. Esperavam que aprendssemos, mas raramente nos ensinavam a aprender.
Mas presumimos que, por voc estar segurando este livro, deseja aprender Java. E
provvel que no queira demorar muito.
Para aproveitar este livro ao mximo, ou qualquer livro ou experincia de aprendizagem,
tome as rdeas de seu crebro. Dedique-se a esse contedo.
O truque fazer seu crebro ver o novo material que voc est aprendendo como
Realmente Importante. Crucial para seu bem-estar. To importante quanto um tigre. Caso
contrrio, voc estar em batalha constante, com seu crebro fazendo o melhor para no
deixar o novo contedo escapar.
Mas exatamente como fazer seu crebro tratar a Java como se fosse um tigre faminto?
H a maneira tediosa e lenta ou a mais rpida e ecaz. A maneira lenta atravs da
repetio contnua. claro que voc sabe que pode aprender e se lembrar at do mais
chato dos tpicos, se continuar insistindo nisso. Com um nvel suciente de repetio,
seu crebro pensar: Isto no parece importante, mas, como ele continua se dedicando
mesma coisa repetidamente, portanto, suponho que deva ser.

A maneira mais rpida fazer qualquer coisa que aumente a atividade cerebral, principalmente tipos diferentes de atividade
cerebral. Os itens da pgina anterior so grande parte da soluo e todos comprovadamente ajudaro seu crebro a trabalhar a seu
favor. Por exemplo, estudos mostram que inserir palavras dentro das guras que elas descrevem (e no em algum outro local da
pgina, como em uma legenda ou no corpo do texto) far com que seu crebro tente descobrir como as palavras e a gura esto
relacionadas, e isso ocasionar o acionamento de mais neurnios. Maior acionamento de neurnios = mais chances de seu crebro
perceber que isso algo em que vale a pena prestar ateno e possivelmente memorizar.
O estilo coloquial ajuda, porque as pessoas tendem a prestar mais ateno quando percebem que esto em uma conversa, j que se espera
que elas acompanhem o assunto e exponham sua opinio. O interessante que seu crebro no est necessariamente preocupado com
o fato de a conversa ser entre voc e um livro! Por outro lado, se o estilo da redao for formal e seco, ele a perceber como se voc
estivesse assistindo a uma palestra enquanto senta em uma sala cheia de espectadores passivos. No preciso car acordado.
Mas guras e um estilo coloquial so apenas o comeo.

24
size
int

Aqui est o que NS fizemos:


Usamos guras, porque seu crebro capta estmulos visuais e no texto. No que diz respeito
ao crebro, uma gura realmente vale por 1.024 palavras. E quando usamos texto e guras
em conjunto, embutimos o texto nas guras, porque o crebro funciona mais ecientemente
quando o texto est dentro daquilo a que ele se refere e no em uma legenda ou oculto em
algum local da redao.
Usamos a repetio, dizendo a mesma coisa de diferentes maneiras e por meios distintos, e
vrios sentidos, para aumentar a chance de que o contedo seja codicado em mais de uma
rea de seu crebro.

!do
Dog

Seja o compilador

Usamos conceitos e guras de maneiras inesperadas, porque seu crebro capta novidades, e
empregamos guras e idias com pelo menos algum contedo emocional, porque o crebro
foi programado para prestar ateno bioqumica das emoes. Qualquer coisa que zer
voc sentir algo ter mais probabilidade de ser lembrada, mesmo se esse sentimento no
passar de uma pequena animao, surpresa ou interesse.
Usamos um estilo coloquial personalizado, porque seu crebro foi programado para prestar mais
ateno quando acredita que est ocorrendo uma conversa do que quando acha que voc est
passivamente assistindo a uma apresentao. Ele far isso at mesmo quando voc estiver lendo.

Quebra-Cabea

Inclumos mais de 50 exerccios, porque seu crebro foi programado para aprender e
lembrar melhor quando voc faz coisas e no quando l. E criamos exerccios desaadores
porm viveis, porque isso que a maioria das pessoas prefere.
Usamos vrios estilos de aprendizagem, porque voc pode preferir procedimentos passo a
passo, enquanto outra pessoa pode querer ter uma viso geral primeiro e outra deseje apenas
ver um exemplo de cdigo. Mas independentemente de sua preferncia de aprendizado, todos
se beneciaro em ver o mesmo contedo representado de vrias maneiras.
Inclumos contedo para os dois lados de seu crebro, porque, quanto mais ele estiver
comprometido, maior probabilidade voc ter de aprender e lembrar e mais tempo conseguir
se concentrar. J que trabalhar um lado do crebro geralmente signica dar ao outro lado a
chance de descansar, voc pode ser mais produtivo no aprendizado durante um perodo maior.

PONTOS DE BALA

Tudo sobre o Java

E inclumos histrias e exerccios que apresentam mais de um ponto de vista, porque


seu crebro foi programado para aprender mais intensamente quando forado a fazer
avaliaes e julgamentos.
Inclumos desaos, com exerccios, e perguntas que nem sempre tm uma resposta direta,
porque seu crebro foi programado para aprender e lembrar quando tem que trabalhar
em algo (da mesma forma que voc no consegue colocar seu corpo em forma apenas
observando pessoas fazendo ginstica). Mas zemos o melhor que pudemos para assegurar
que, quando voc estiver se esforando muito, isso ocorra envolvendo as coisas certas. Que
voc no gaste nem mesmo um dendrite extra processando um exemplo difcil de entender
ou analisando jarges carregados e complexos ou texto extremamente conciso.

Exercitando o
crebro

Usamos uma abordagem 80/20. Presumimos que, se voc estiver tentando obter um PhD em Java,
esse no ser seu nico livro. Portanto, no abordamos tudo. Apenas o que voc realmente usar.

Veja o que fazer para que o seu crebro se curve em sinal de submisso
Fizemos nossa parte. O resto com voc. Essas dicas so um ponto de partida; escute seu crebro e descubra o que
funciona com voc e o que no funciona. Tente coisas novas.

Recorte isso e cole em sua geladeira.


1 Tenha calma. Quando mais voc entender, menos ter
que memorizar.
No leia apenas. Pare e pense. Quando o livro lhe
!zer uma pergunta, no passe apenas para a resposta.
Imagine que algum est realmente fazendo a pergunta.
Quando voc forar seu crebro a pensar, mais chances
ter de aprender e lembrar.
2 Faa os exerccios. Escreva suas prprias
anotaes.
Ns os inserimos, mas se os resolvermos, isso seria
como ter outra pessoa fazendo uma prova para voc. E
no olhe apenas para os exerccios. Use um lpis. H
muitas evidncias de que a atividade fsica durante o
estudo pode aumentar o aprendizado.
3 Leia a parte No existem perguntas idiotas
Quero dizer todas. No so apenas notas laterais
elas fazem parte do contedo principal! s vezes as
perguntas so mais teis do que as respostas.
4 No leia tudo no mesmo local.
Levante-se, estique o corpo, mova-se, mude de
cadeira, v at outra sala. Isso ajudar seu crebro
a sentir algo e no deixar que o aprendizado !que
muito ligado a um local espec!co.
5 Deixe essa ser a ltima coisa a ser feita antes de
voc ir para a cama. Ou pelo menos a ltima coisa
desa adora.
Parte do aprendizado (principalmente a transferncia
para a memria de longo prazo) ocorrer depois que
voc fechar o livro. Seu crebro precisa de um tempo
prprio, para continuar processando. Se voc captar
algo novo durante esse tempo de processamento, parte
do que acabou de aprender ser perdida.

6 Beba gua. Muita gua.


Seu crebro funcionar melhor com um bom banho. A
desidratao (que pode ocorrer antes mesmo de voc
sentir sede) diminui a funo cognitiva.
7 Fale sobre o assunto. Em voz alta.
Falar ativa uma parte diferente do crebro. Se voc
estiver tentando entender algo, ou aumentar suas
chances de se lembrar de algo posteriormente, fale em
voz alta. Melhor ainda, tente explicar em voz alta
para outra pessoa. Voc aprender mais rapidamente
e pode descobrir particularidades que no tinha
percebido ao ler sobre o assunto.
8 Escute seu crebro.
Preste ateno se seu crebro est !cando
sobrecarregado. Se perceber que comeou a ler
super!cialmente ou a esquecer o que acabou de ler,
hora de fazer um intervalo. Uma vez que tiver passado
de um certo ponto, voc no aprender com maior
rapidez tentando assimilar mais e pode at prejudicar
o processo.
9 Sinta algo!
Seu crebro precisa saber que isso importante.
Envolva-se com as histrias. Crie suas prprias
legendas para as fotos. Reclamar de uma piada ruim
melhor do que no sentir absolutamente nada.
10 Digite e execute o cdigo.
Digite e execute os exemplos de cdigo. Em seguida,
voc poder fazer testes alterando e aperfeioando
o cdigo (ou interrompendo-o, o que s vezes a
melhor maneira de descobrir o que est realmente
acontecendo). Em exemplos longos de cdigos
prede!nidos, voc pode fazer o download dos arquivosfonte a partir de jeadjava!rst.com

Requisitos deste livro:


Voc no precisa de nenhuma outra ferramenta de desenvolvimento, como um ambiente de desenvolvimento
integrado (IDE, Integrated Development Environment). Recomendamos que no use nada a no ser um
editor de texto bsico at concluir a leitura (e principalmente no antes do Captulo 16). Um IDE pode lhe
proteger de alguns dos detalhes que so muito importantes, portanto, voc se sair muito melhor aprendendo
na linha de comando e, em seguida, aps ter compreendido realmente o que est acontecendo, passe para uma
ferramenta que automatize parte do processo.

Congurando o Java
- Se voc j no tiver um SDK (Software Development Kit) Java 2 Standard Edition 1.5 ou superior,
precisar dele. Se estiver trabalhando no Linux, Windows ou Solaris, poder adquiri-lo gratuitamente em
java.sun.com (site Web para desenvolvedores Java). Geralmente no so necessrios mais do que dois
cliques na pgina principal para que a pgina de downloads do J2SE seja acessada. Capture a ltima verso
no-beta publicada. O SDK inclui tudo que voc precisar para compilar e executar o Java.
Se voc estiver executando o Mac OS X 10.4, o SDK Java j estar instalado. Ele faz parte do OS X e voc
no ter que fazer mais nada. Se estiver com uma verso anterior do OS X, ter uma verso desatualizada do
Java que servir para 95% dos cdigos deste livro.
Nota: este livro foi baseado no Java 1.5, mas por razes desconhecidas de marketing, logo aps o
lanamento, a Sun a renomeou como Java 5, embora tenha mantido 1.5 como o nmero da verso no
kit do desenvolvedor. Portanto, se voc se deparar com Java 1.5, Java 5, Java 5.0 ou Tiger (pseudnimo
original da verso 5), so todas a mesma coisa. Nunca houve um Java 3.0 ou 4.0 ele saltou da verso 1.4
para a 5.0, mas voc ainda encontrar locais onde chamado de 1.5 em vez de 5. No pergunte por qu. (Ah,
e apenas para deixar a situao mais divertida, tanto o Java 5 quanto o Mac OS X 10.4 receberam o mesmo
pseudnimo Tiger, e j que o OS X 10.4 a verso do Mac OS necessria execuo do Java 5, voc
ouvir pessoas falando sobre Tiger em Tiger. Isso signica apenas Java 5 no OS X 10.4.)
- O SDK no inclui a documentao do API e voc precisa dela! Acesse novamente java.sun.com e capture
a documentao do API J2SE. Voc tambm pode acessar os documentos do API on-line, sem fazer o
download, mas isso complicado. Acredite. Melhor fazer o download.
- Voc precisar de um editor de texto. Praticamente qualquer editor de texto pode ser usado (vi, emacs,
pico), inclusive os de GUI que vm com a maioria dos sistemas operacionais. O Bloco de Notas, WordPad,
TextEdit, etc., todos serviro, contanto que voc se certique de que eles no acrescentem um .txt ao nal
de seu cdigo-fonte.
- Quando voc tiver feito o download e descompactado, compactado ou seja l o que for preciso (depende
de que verso e para qual sistema operacional), ter que adicionar uma entrada para sua varivel de ambiente
PATH, que apontar para o diretrio bin dentro do diretrio Java principal. Por exemplo, se o J2SDK inserir
um diretrio em sua unidade de disco chamado j2sdk1.5.0, olhe dentro desse diretrio e voc encontrar
o diretrio bin onde os arquivos binrios (as ferramentas) do Java residem. O diretrio bin aquele para o
qual voc precisar de uma varivel PATH, para que, quando digitar:
% javac

na linha de comando, seu terminal saiba como encontrar o compilador javac.


Nota: se voc tiver problemas com sua instalao, recomendamos que acesse javaranch.com e se associe ao frum Java-Beggining! Na
verdade, voc deve fazer isso, tendo ou no problemas.
Nota: grande parte dos cdigos deste livro esto disponveis em wickedlysmart.com

Coisas de ltima hora que voc precisa saber:


Esta uma experincia de aprendizado e no uma obra de referncia. Eliminamos
deliberadamente tudo que pudesse atrapalhar o aprendizado, independentemente do que
estivssemos abordando em um certo ponto do livro. E, na primeira leitura, preciso estudar
desde o incio, porque o livro faz suposies sobre o que voc j viu e aprendeu.

Usamos diagramas simples semelhantes UML.


Se tivssemos usado UML pura, voc veria algo parecido com Java, mas com sintaxe
totalmente errada. Portanto, usamos uma verso simplicada de UML que no entra em
conito com a sintaxe do Java. Se voc ainda no conhece UML, no ter que se preocupar
em aprender Java e UML ao mesmo tempo.

Usamos uma UML fictcia


modificada e mais simples
Dog
size
bark( )
eat( )
chaseCat( )

No nos preocupamos com a organizao e o empacotamento de seu cdigo


at o fim do livro.
Neste livro, voc pode dar prosseguimento tarefa de aprender Java, sem se preocupar com
alguns dos detalhes organizacionais e administrativos do desenvolvimento de programas
em Java. No dia-a-dia, voc ter que conhecer e usar esses detalhes, portanto, eles
foram abordados cuidadosamente. Mas deixamos para o m do livro (Captulo 17). Relaxe
enquanto aprecia o Java, tranqilamente.

Voc deve executar T ODAS as


atividades Aponte seu lpis

Os exerccios de fim de captulo so obrigatrios; os quebra-cabeas so


opcionais. As respostas dos dois esto no fim de cada captulo.
Uma coisa que voc precisa saber sobre os quebra-cabeas eles so enigmas. Como nos
enigmas lgicos, nos estimuladores cerebrais, nas palavras cruzadas, etc. Os exerccios esto
aqui para ajudar voc a praticar o que aprendeu, e recomendvel faz-los. Os quebracabeas so diferentes e alguns deles so bem desaadores de uma maneira enigmtica.
Esses quebra-cabeas foram projetados para funcionar como decifradores de enigmas e,
provavelmente, voc saber quando encontrar um. Se no tiver certeza, sugerimos que
tente fazer alguns deles, mas, independentemente do que acontecer, no desanime se no
conseguir resolver um quebra-cabea ou se simplesmente no tiver tempo para isso.

Exerccio

As atividades marcadas com


o logotipo Exerccio (tnis de
corrida) so obrigatrias!
No deixe de execut-las, se
quiser mesmo aprender Java.

Os exerccios Aponte Seu Lpis no tm respostas.


Pelo menos no impressas neste livro. Para alguns deles, no h resposta correta e, em
outros, parte da experincia de aprendizado da atividade ser voc decidir se e quando
suas repostas esto corretas. (Algumas de nossa respostas sugeridas esto disponveis em
wickedlysmart.com.)

Os exemplos de cdigo so to simples quanto possvel


frustrante percorrer 200 linhas de cdigo procurando pelas duas linhas que voc precisa
entender. A maioria dos exemplos deste livro mostrada no contexto mais simples possvel,
para que a parte que voc estiver tentando aprender que clara e fcil. Portanto, no espere
que o cdigo seja robusto ou mesmo completo. Isso vai depender de voc depois que
terminar o livro. Os exemplos do livro foram escritos especicamente para o aprendizado e
nem sempre funcionam perfeitamente.

Se voc se deparar com o


logotipo Quebra-Cabeas,
a atividade opcional e, se
no for um apreciador de
lgica traioeira ou palavras
cruzadas, tambm no
gostar dessas atividades.

Editores tcnicos
Todos merecem crdito, mas os erros so responsabilidade apenas do autor... Algum acredita nisso? Esto vendo as duas
pessoas que se encontram nesta pgina? Se voc encontrar problemas tcnicos, provavelmente ser culpa delas. : )

O MINI
de Jessica

Valentin Crettaz
Jessica Sant

A gravata de Valentin
Jess trabalha na Hewlett-Packard na Equipe de Servios de
Auto-Reparo. Ela se formou em Engenharia da Computao na
Villanova University, tem os certicados SCPJ 1.4 e SCWCD
e se passaram literalmente vrios meses desde que recebeu
seu diploma de Mestre em Engenharia de Softwares na Drexel
University (uau!).

Valentin Valentin Crettaz tem o diploma de Mestre em Cincia


da Informao e Computao do Instituto Federal Suo
de Tecnologia em Lausanne. (EPFL). Ele trabalhou como
engenheiro de softwares com a SRI International (Menlo Park,
CA) e como engenheiro chefe no Laboratrio de Engenharia de
Softwares do EPFL.

Quando no est trabalhando, estudando ou dirigindo seu MINI


Cooper S, Jess pode ser encontrada brigando com seu gato pelo
novelo enquanto conclui seu ltimo projeto de tric ou croch
(algum a quer um gorro?). Ela originalmente de Salt Lake
City, Utah (no, ela no mrmon... claro, voc deve ter
pensado nisso) e atualmente vive perto da Filadla com seu
marido, Mendra, e dois gatos: Chai e Sake.

Valentin co-fundador e CTO da Condris Technologies, uma


empresa especializada no desenvolvimento de solues de
arquitetura de softwares.

Voc pode encontr-la moderando fruns tcnicos em


javaranch.com.

Seus interesses em pesquisa e desenvolvimento incluem


tecnologias orientadas apresentao, padres de projeto e
arquitetura, servios Web e arquitetura de software. Alm de
cuidar de sua esposa, praticar jardinagem, ler e fazer algum
esporte, Valentin moderador dos fruns SCBCD e SCDJWS
no Javaranch.com. Ele tem os certicados SCJP, SCJD,
SCBSC, SCWCD e SCDJWS. Tambm teve a oportunidade de
ser o co-autor do Simulador de Exames SCBCD do Whizlabs.
(Ainda estamos chocados em v-lo de gravata).

Outras pessoas que merecem (culpa) crdito:


Na OReilly:
Muito obrigado a Mike Loukides da OReilly, por participar deste
projeto e ajudar a formar o conceito Use a Cabea! em um livro (e srie).
Quando esta segunda edio foi para a grca, j havia cinco livros Use
a Cabea! e ele esteve conosco em todos. A Tim OReilly, por se dispor
a entrar em algo completamente novo e diferente. Obrigado ao inteligente
Kyle Hart, por descobrir como a srie Use a Cabea! poderia servir aos
outros e por lan-la. Para concluir, a Eddie Freedman, por projetar a
capa da srie com nfase na cabea.

Alguns de nossos revisores


especialistas em Java...
Jef Cumps

Nossos intrpidos testadores beta e equipe de revisores:


Agradecemos muito ao diretor de nossa equipe tcnica no javaranch,
Johannes de Jong. Esta sua quinta vez trabalhando conosco em um
livro Use a Cabea! e estamos felizes por voc ainda estar em contato.
Jeff Cumps j est em seu terceiro livro conosco e continua implacvel
em achar reas onde teramos que ser mais claros ou corretos.

Johannes de
Jong

Corey McGlone,voc timo. E achamos que deu as explicaes mais


claras sobre o javaranch. Voc deve perceber que roubamos uma ou
duas delas. Jason Menard nos salvou tecnicamente em mais do que
apenas alguns detalhes, e Thomas Paul, como sempre, nos forneceu
feedback especializado e encontrou os sutis problemas do Java que o
resto de ns deixou passar. Jane Griscti conhece Java (e sabe alguma
coisa de redao) e foi timo t-la ajudando na nova edio junto com o
associado de longa data do javaranch Barry Gaunt.
Mailyn de Queiroz nos deu excelente suporte nas duas edies do livro.
Chris Jones, John Nyquist, James Cubeta, Terri Cubeta e Ira Becker
nos foram de grande ajuda na primeira edio.
Agradecimentos especiais a alguns dos envolvidos na srie Use a
Cabea! que nos tm ajudado desde o incio: Angelo Celeste, Mikalai
Zaikin e Thomas Duff (twduff.com). E obrigado a nosso fantstico
agente, David Rogelberg do StudioB (mas, falando srio, e quanto aos
direitos do lme?)

Rodney J.
Woodruff

Terri Cubeta

James Cubeta

Ira Becker

t
John Nyquis

rd
Jason Mena
T homas Paul
Marilyn
de Queiroz
Chris Jones

Quando voc pensou que no haveria mais agradecimentos*.


Mais especialistas tcnicos em Java que ajudaram na primeira edio (em ordem semialeatria):
Emiko Hori, Michael Taupitz, Mike Gallihugh, Manish Hatwalne, James Chegwidden, Shweta Mathur,
Mohamed Mazahim, John Paverd, Joseph Bih, Skulrat Patanavanich, Sunil Palicha, Suddhasatwa Ghosh,
Ramki Srinivasan, Alfred Raouf, Angelo Celeste, Mikalai Zaikin, John Zoetebier, Jim Pleger, Barry Gaunt
e Mark Dielen.

A equipe dos quebra-cabeas da primeira edio:


Dirk Schrekmann. Mary Campe de Cruzadas em Java Leners, Rodney J. Woodruff, Gavin Bong e Jason
Menard. O Javaranch tem sorte por contar com seu apoio.

Outros conspiradores a agradecer:


Paul Wheaton, o principal orientador do javaranch por dar suporte a milhares de aprendizes de Java.
Solveig Haugland, instrutora de J2EE e autora de Dating design patterns (Encontrando-se com os padres de
projeto).
Os autores Dori Smith e Tom Negrino (backupbrain.com), por nos ajudarem a conhecer o mundo dos livros
tcnicos.
Nossos parceiros no crime Head First, Eric Freeman e Beth Freeman (autores de Use a Cabea! Design
Patterns), por disponibilizarem a BawlsTM para que terminssemos a tempo.
Sherry Dorris, por tudo que realmente importa.

Os bravos pioneiros que adotaram a srie Use a Cabea!:


Joe Litton, Ross P. Goldberg, Dominic Da Silva, honestpuck, Danny Bromberg, Stephen Lepp, Elton Hughes,
Eric Christensen, Vulinh Nguyen, Mark Rau, Abdulhaf, Nathan Oliphant, Michael Bradly, Alex Darrow,
Michael Fischer, Sarah Nottingham, Tim Allen, Bob Thomas e Mike Bibby (o primeiro).

* O grande nmero de agradecimentos se deve ao fato de estarmos testando a teoria de que todas as pessoas mencionadas nos
agradecimentos de um livro compraro pelo menos uma cpia, provavelmente mais, pensando nos parentes e conhecidos. Se voc quiser
estar nos agradecimentos de nosso prximo livro e tiver uma famlia grande, nos escreva.

1 d um Mergulho Rpido

d um Mergulho Rpido

Aprofundando-se
Venha, a gua est tima! Mergulharemos direto na
criao de um cdigo, em seguida, ns o compilaremos
e o executaremos. Falaremos sobre a sintaxe, loops,
ramicaes e o que torna a Java to interessante.
Logo voc estar codicando.

O Java o levar a novas fronteiras. No humilde lanamento


para o pblico como a (suposta) verso 1.02, o Java seduziu os
programadores com sua sintaxe amigvel, recursos orientados
a objetos, gerenciamento de memria e, o melhor de tudo a
promessa de portabilidade. A possibilidade de escrever uma vez/
executar em qualquer local exerce uma atrao muito forte.
Seguidores devotados surgiram, enquanto os programadores
combatiam os erros, limitaes e, ah sim, o fato de ela ser muito
lenta. Mas isso foi h muito tempo. Se voc for iniciante em Java,
tem sorte. Alguns de ns tiveram que passar por algo como andar
quase dez quilmetros na neve e subir montanhas pelos dois lados
(descalos), para fazer at mesmo o applet mais simples funcionar.
Mas voc pode manipular o mais fcil, rpido e muito mais
poderoso Java atual.

este um
voc
novo
estcaptulo
aqui

como o Java funciona

Como o Java funciona


O objetivo escrever um aplicativo (neste exemplo, um convite de festa interativo) e faz-lo funcionar em
qualquer dispositivo que seus amigos tiverem.

Method Party()
0 aload_0

Cdigo-fonte
do convite
de festa
interativo.

1 invokespecial
#1 <Method java.
lang.Object()>
4 return

Cdigo-fonte
1

Compilador

Crie um documento para


o cdigo-fonte. Use um
protocolo estabelecido
(nesse caso, a
linguagem Java).

Sada (cdigo)

Execute seu
documento em um
compilador de
cdigo-fonte. O
compilador procurar
erros e no deixar
voc compilar at
ter certeza de que
tudo ser executado
corretamente.

Mquinas virtuais

O compilador criar um
novo documento, codi!cado
em bytecode Java. Qualquer
dispositivo capaz de
executar Java conseguir
interpretar/converter esse
arquivo em algo que possa
processar. O bytecode
compilado independente
da plataforma.

4
Seus amigos no tm uma
mquina Java fsica, mas
todos tm uma mquina Java
virtual (implementada em
software) sendo executada
dentro de seus aparelhos
eletrnicos. A mquina
virtual ler e executar
o
bytecode.

O que voc far em Java


Voc criar um arquivo de cdigo-fonte, compilar usando o compilador javac e, em seguida, executar o
bytecode compilado em uma mquina virtual Java.
import java.awt.*;
import java.awt.event.*;
class Party {
public void buildInvite() {
Frame f = new Frame();
Label l = new
Label(Party at Tims);
Button b = new
Button(You bet);
Button c = new
Button(Shoot me);
Panel p = new Panel();
p.add(l);
}
// mais cdigo aqui...
}

File Edit Window Help Plead

%javac Party.java

1
Digite seu cdigo-fonte.
Salve como: Party.java

File Edit Window Help Swear

%java Party

awt.Frame()>

Compilador
Cdigo-fonte

Method Party()
0 aload_0
1 invokespecial #1 <Method java.
lang.Object()>
4 return
Method void buildInvite()
0 new #2 <Class java.awt.Frame>
3 dup
4 invokespecial #3 <Method java.

2
Compile o arquivo
Party.java
executando o javac
(o aplicativo do
compilador). Se no
houver erros, voc
ter um segundo
documento chamado
Party.class
O arquivo Party.
class gerado
pelo compilador
composto de
bytecodes.

Mquinas virtuais
Sada (cdigo)
4
3
Cdigo compilado: Party.
class

Execute o programa
iniciando a Java Virtual
Machine (JVM) com o
arquivo Party.class.
A JVM converter o
bytecode em algo que a
plataforma subjacente
entenda e executar seu
programa.

(Nota: no pretendemos que essas instrues sejam um tutorial... Voc vai escrever cdigo real em breve, mas,
por enquanto, queremos apenas que tenha uma idia de como tudo se encaixa.)
2

captulo 1

d um Mergulho Rpido

Classes da biblioteca padro Java


3.500
3.000
2.500
2.000
1.500
1.000
500
0

Lenta.

250 classes

Java 1.02

Mais recursos, mais


amigvel. Comeando
a se tornar muito
popular. Cdigo de GUI
mais adequado.

Um pouco mais rpida.

500 classes

Java 1.1

Muito mais rpida.

2.300 classes

Java 2 (verses 1.2 1.4)

Mais recursos, mais fcil de


desenvolver.

3.500 classes

Java 5.0 (verses 1.5 e posteriores)

Um histrico bem resumido do Java

Nome e logotipo
interessantes.
Divertida de usar.
Muitos erros. Os
applets so o
destaque.

Alm de adicionar mais de


mil classes complementares,
a Java 5.0 (conhecida como
Tiger) acrescentou alteraes
signi!cativas prpria
linguagem, tornando-a mais fcil
(pelo menos em teoria) para os
programadores e fornecendo novos
recursos que eram populares em
outras linguagens.

Pode (em algumas situaes)


ser executada em velocidades
condizentes. Pro!ssional,
poderosa. Vem em trs
verses: Micro Edition
(J2ME), Standard Edition
(J2SE) e Enterprise Edition
(J2EE). Torna-se a linguagem
preferida para novos
aplicativos empresariais
(principalmente os baseados
na Web) e mveis.

voc est aqui

aponte seu lpis

Tente adivinhar o que cada linha de cdigo est fazendo...


(As respostas esto na prxima pgina.)
Veja como fcil escrever cdigo Java.
int size = 27;
String name = Fido;

declara uma varivel de tipo inteiro chamada size e lhe


atribui o valor 27

Dog myDog = new Dog(name, size);


x = size - 5;
if (x < 15) myDog.bark(8);

while (x > 3) {
myDog.play();
}

int[] numList = {2,4,6,8};


System.out.print(Hello);
System.out.print(Dog: + name);
String num = 8;
int z = Integer.parseInt(num);

try {
readTheFile(myFile.txt);
}
catch(FileNotFoundException ex) {
System.out.print(File not found.);
}

P: Sei que existem o Java 2 e o Java 5.0, mas existiram o Java 3 e 4? E por que Java 5.0 e no Java 2.0?
As brincadeiras do marketing... Quando a verso do Java passou de 1.1 para 1.2, as alteraes foram to
R:
signicativas, que os anunciantes decidiram que precisavam de um nome totalmente novo, portanto .comearam
a cham-la de Java 2, ainda que a verso fosse realmente a 1.2. Porm, as verses 1.3 e 1.4 continuaram a
ser consideradas como Java 2. Nunca houve o Java 3 ou 4. Comeando pelo Java verso 1.5, os anunciantes
decidiram novamente que as alteraes eram to signicativas, que um novo nome era necessrio (e a maioria dos
desenvolvedores concordou), logo, eles avaliaram as opes. O prximo nmero na seqncia do nome seria 3,
mas chamar o Java 1.5 de Java 3 parecia mais confuso, portanto, decidiram nome-lo Java 5.0 para usar o 5 da
verso 1.5.
Logo, o Java original compreendeu as verses que iam da 1.02 (o primeiro lanamento ocial) s conhecidas
simplesmente como Java. As verses 1.2, 1.3 e 1.4 consistiram no Java 2. E comeando na verso 1.5, ele
passou a se chamar Java 5.0. Mas voc tambm o ver sendo chamado de Java 5 (sem o .0) e Tiger (seu
codinome original). No temos idia do que acontecer com a prxima verso...

captulo 1

d um Mergulho Rpido

Ainda no preciso se preocupar em entender tudo isso!


Tudo que se encontra aqui explicado com maiores detalhes no livro, grande parte
nas primeiras 40 pginas. Se o Java lembrar uma linguagem que voc usou no
passado, alguns desses itens parecero simples. Caso contrrio, no se preocupe
com isso. Chegaremos l...
Veja como fcil escrever cdigo Java.
int size = 27;

declara uma varivel de tipo inteiro chamada size e lhe atribui o valor 27

String name = Fido;

declara uma varivel de string de caracteres chamada name e lhe atribui o


valor Fido
declara a nova varivel de tipo Dog chamada myDog e cria o novo objeto Dog
usando name e size

Dog myDog = new Dog(name, size);


x = size - 5;

subtrai 5 de 27 (valor de size) e atribui o valor a uma varivel chamada x

if (x < 15) myDog.bark(8);

se x (valor = 22) for menor do que 15, informa ao co (dog) para latir
(bark) 8 vezes

while (x > 3) {
myDog.play();

mantm o loop at x ser maior que 3...


pede ao co que brinque (independentemente do que ISSO signi!que para um co...)

aqui parece ser o !m do loop tudo que estiver entre { } ser feito no loop

int[] numList = {2,4,6,8};

declara a lista de variveis de tipo inteiro numList e insere 2, 4, 6, 8 nela

System.out.print(Hello);

exibe Hello... provavelmente na linha de comando

System.out.print(Dog: + name);

exibe Hello Fido (o valor de name Fido) na linha de comando

String num = 8;

declara a varivel de string de caracteres num e lhe atribui o valor 8

int z = Integer.parseInt(num);

converte a string de caracteres 8 no valor numrico real 8

try {

tenta fazer algo... Pode ser que o que estamos tentando no funcione...

readTheFile(myFile.txt);

l um arquivo de texto chamado myFile.txt (ou pelo menos TENTA ler o arquivo...)

deve ser o !m das tentativas, portanto, acho que possvel tentar fazer
muitas coisas...

catch(FileNotFoundException ex) {

aqui deve ser onde voc saber se o que tentou no funcionou...

System.out.print(File not found.);

se o que tentamos no deu certo, exibiremos File not found na linha de comando

parece que tudo que se encontra entre { } o que deve ser feito se a
tentativa no funcionar...

voc est aqui

Resposta dos exerccios

Estrutura do cdigo em Java


Arquivo-fonte
Arquivo de classe
Mtodo 1
Instruo

Mtodo 2
Instruo
Instruo

O que existe em um
arquivo-FONTE?

public class Dog{

Um arquivo de cdigo-fonte (com a extenso


.java) contm uma denio de classe. A classe
representa uma parte de seu programa, embora
um aplicativo muito pequeno possa precisar
apenas de uma classe. A classe deve car dentro
de uma par de chaves.

O que existe em uma CLASSE?


Uma classe tem um ou mais mtodos. Na
classe Dog, o mtodo bark conter instrues
de como o co deve latir. Seus mtodos devem
ser declarados dentro de uma classe (em outras
palavras, dentro das chaves da classe).

classe

public class Dog {


void bark( ) {

}
}

mtodo

captulo 1