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

Java

Intermedirio

Fortaleza,junho/2014
Sumrio
Introduo.............................................................................................................................................5
Capitulo 1.O que a linguagem java....................................................................................................6
1.1.- Histrico da linguagem............................................................................................................6
1.2.Uso da linguagem no mercado atualmente(especificao das tecnologias)..............................7
1.3.Principais caractersticas da linguagem de programao java...................................................7
1.4. Ambientes e ferramentas de desenvolvimento com java........................................................11
1.4.1. Instalao do JDK ou SDK e JRE e suas configuraes.................................................11
1.5.Meu primeiro programa em java..............................................................................................11
1.5.1.Comentrios em Java:......................................................................................................13
1.5.2.Compilando meu primeiro programa em Java.................................................................13
1.5.3.Dicas para resoluo de problemas em programas java...................................................14
1.6.Erros comum em programas java............................................................................................15
1.6.1.Erros em java:..................................................................................................................15
1.6.2.Erro em tempo de compilao :.......................................................................................15
1.6.3.Erro em tempo de execuo:............................................................................................15
1.7.Netbeans...................................................................................................................................15
1.8.Viso de outras IDEs para o desenvolvimento com java.........................................................16
1.8.1.IDE Eclipse......................................................................................................................16
1.8.2.A IDE Bluej......................................................................................................................16
1.8.3.A IDE Gel.........................................................................................................................16
1.8.4.A IDE Jdeveloper.............................................................................................................16
1.9.Identificadores e palavras-chaves............................................................................................17
1.10.Tipos primitivos:....................................................................................................................18
1.10.1.Uso de valores literais de todos os tipos de dados existentes........................................18
1.10.1.1.Literais Inteiros:.....................................................................................................19
1.10.1.2.Literais decimal:.....................................................................................................19
1.10.1.3.Literais octal:..........................................................................................................19
1.10.1.4.Literais hexadecimal:.............................................................................................19
1.10.1.5.Literais de ponto flutuante:.....................................................................................20
1.10.1.6.Literais booleanos:.................................................................................................21
1.10.1.7.Literais de caracteres:.............................................................................................21
1.10.1.8.Literais para String:................................................................................................22
1.11.Operadores em Java:..............................................................................................................22
1.11.1.Operadores de atribuio composto...............................................................................23
1.11.2. Operadores de comparao...........................................................................................24
1.11.3.Igualdade de tipos primitivos :.......................................................................................24
1.11.4.Igualdade de variveis de referncias:...........................................................................25
1.11.5.Operador Instanceof:......................................................................................................25
1.11.6.Operador concatenao de strings:.................................................................................26
1.12. Operadores aritmticos.........................................................................................................27
1.12.1.Operador resto (%) :.......................................................................................................27
1.12.2.Operadores de Incremento e Decremento:.....................................................................28
1.12.6.OBS: A diferena que nesse caso podemos visualizar os resultados, 5,4 e 3;...............28
1.12.7.Exerccio resolvido........................................................................................................29
1.12.8.Operadores relacionais:..................................................................................................29
1.12.9.Operadores lgicos.........................................................................................................29
1.12.10.Os operadores Bitwise :...............................................................................................30
1.12.11. Operadores lgicos de abreviao:..............................................................................30
1.12.12.Operadores lgicos ^ e !:..............................................................................................31
1.12.13.Operadores condicionais..............................................................................................31
1.12.14.Operador Ternrio........................................................................................................32
1.12.15. Precedncia de Operadores.........................................................................................33
Capitulo 2.Controle de fluxo em java.................................................................................................34
2.1.Utilizar cdigo que use instrues if........................................................................................34
2.1.1.Expresses vlidas para instrues if...............................................................................34
2.1.2.Expresses vlidas para instrues if-else.......................................................................35
2.1.3. Expresses vlidas para instrues if-else-if...................................................................36
2.2.Expresses vlidas para instrues switch e case....................................................................37
2.3.Loops e iteradores (usando os loops for, while e do while).....................................................39
2.3.1.Loop do while:.................................................................................................................40
2.3.2.Loop for:..........................................................................................................................41
2.4. Loop for aprimorado (para arrays)..........................................................................................42
2.5.Uso de break, continue e return...............................................................................................43
2.5.1.Break:...............................................................................................................................43
2.5.2.Continue:..........................................................................................................................44
2.5.3.Return:..............................................................................................................................45
Capitulo 3.Tipos de Variveis, Constantes e Casting.........................................................................46
3.1.O que uma varivel :.............................................................................................................46
3.1.1.Tipos de Variveis:...........................................................................................................46
3.2. Variveis estticas:..................................................................................................................47
3.3. Constantes...............................................................................................................................48
3.4.Converso ou Cast (explcita e implcita das variveis de tipos primitivos)...........................48
3.5. Atribuindo uma varivel de referncia a outra.......................................................................51
3.5.1. Escopo de variveis.........................................................................................................51
3.5.2.Variveis de instncias de tipos primitivos......................................................................51
Capitulo 4.POO com Java..................................................................................................................52
4.1.Introduo................................................................................................................................52
4.2.Classe, Atributos e Mtodos....................................................................................................53
4.3.Construindo uma Classe..........................................................................................................54
4.4.Encapsulamento.......................................................................................................................54
4.5.Retorno.....................................................................................................................................55
4.6.Construtores, mtodos seteres e geteres..................................................................................55
4.6.1.Construtores.....................................................................................................................55
4.6.2.Mtodos seteres e geteres.................................................................................................55
4.7.Estanciando (Construindo um Objeto)....................................................................................56
4.8.Variveis Estticas...................................................................................................................56
Conclumos ento que as variveis estticas no pertencem especificamente a nenhuma instancia de
objeto e sim uma referencia da classe. O que explica a substituio do termo this para o nome da
classe que que contm a varivel esttica, no exemplo acima alteramos o termo this no mtodo
setOndeVivo pelo nome da classe que contm a varivel esttica (Pessoa)......................................57
4.9.Mtodos Estticos....................................................................................................................57
Capitulo 5.Herana e Interface...........................................................................................................58
5.1.Introduo................................................................................................................................58
5.2.Herana....................................................................................................................................58
5.3.Object: A superclasse csmica do java....................................................................................59
5.3.1.Construtores da subclasse................................................................................................63
5.3.2.Classe Abstrata.................................................................................................................63
5.4.Interface...................................................................................................................................65
Capitulo 6.Herana (Polimorfismo )..................................................................................................66
6.1.Introduo................................................................................................................................66
6.2.Sobrecarga................................................................................................................................66
6.3.SobreEscrita.............................................................................................................................66
6.4.Polimorfismo...........................................................................................................................67
Capitulo 7.Tratamento de Excees...................................................................................................69
7.1.Capturando uma exceo usando o bloco (try e catch)...........................................................69
7.1.1.Finally..............................................................................................................................70
7.1.2.Lanado uma exceo com o throws...............................................................................71
7.1.3.Criando uma exceo com throw.....................................................................................71
Capitulo 8.UML.................................................................................................................................73
8.1.Introduo................................................................................................................................73
8.1.1.Diagrama de Atividade:...................................................................................................73
8.1.2.Diagrama de Sequencia....................................................................................................73
8.1.3.Diagrama de Caso de Uso................................................................................................73
8.1.4.Diagrama de Classe..........................................................................................................73
8.2.Abrindo o Projeto.....................................................................................................................74
Capitulo 9.Fila e Pilha........................................................................................................................76
9.1.Fila...........................................................................................................................................76
9.1.1.Implementando Fila em Java...........................................................................................76
9.2.Pilha.........................................................................................................................................78
9.2.1.Implementando Pilha em Java.........................................................................................78
Capitulo 10.Colees: List e Map......................................................................................................80
10.1. Introduo a Colees/Collections.......................................................................................80
10.2. Collection List ou Coleo Lista..........................................................................................82
10.3.ArrayList................................................................................................................................83
10.3.1.Criando uma Lista em Java usando a Classe ArrayList.................................................84
10.3.2.Adicionando elementos em uma Lista...........................................................................84
10.3.3.Removendo elementos de uma Lista..............................................................................86
10.3.4.Acessando elementos da Lista.......................................................................................87
10.3.5.Pesquisando elementos na Lista.....................................................................................90
10.4. Collection Map ou Coleo Mapa........................................................................................91
10.5.HashMap................................................................................................................................92
10.5.1.Criando uma coleo do tipo Mapa usando a Classe HashMap....................................92
10.5.2.Adicionando elementos em uma coleo do tipo Mapa.................................................93
10.5.3.Removendo elementos em uma coleo do tipo Mapa..................................................94
10.5.4.Selecionando/Pesquisando elementos em uma coleo do tipo Mapa...........................95
10.5.5.Nmero de elementos em uma coleo do tipo Mapa...................................................95
Capitulo 11.Interface Grfica com Usurio GUI.............................................................................97
11.1.Interface Grfica com usurio - GUI.....................................................................................97
11.2.Bibliotecas AWT e SWING...................................................................................................98
11.3.JFrame....................................................................................................................................98
11.3.1.Camadas JFrame............................................................................................................98
11.3.2.Nossa primeira Janela com JFrame................................................................................99
11.4.Criando uma classe com propriedades JFrame....................................................................100
11.5. JLabel..................................................................................................................................102
11.6. JButton................................................................................................................................103
11.7. JTextField............................................................................................................................104
11.8. Icon.....................................................................................................................................105
11.9. Editando fonte com o setFont()...........................................................................................106
11.10.JMenuBar, JMenu e JMenuItem........................................................................................106
11.11.JCheckBox.........................................................................................................................108
11.12.JRadioButton......................................................................................................................109
11.13.JComboBox........................................................................................................................110
11.14.Mais Componentes Swing..................................................................................................111
Capitulo 12.Gerenciadores de Layout..............................................................................................112
12.1. Gerenciadores de Layout....................................................................................................112
12.2. BorderLayout......................................................................................................................113
12.3.BoxLayout............................................................................................................................114
12.4.FlowLayout..........................................................................................................................115
12.5.GridLayout...........................................................................................................................116
12.6.GridBabLayout....................................................................................................................117
Capitulo 13.Eventos (Listeners).......................................................................................................118
13.1.ActionListener......................................................................................................................118
13.2.FocusListener.......................................................................................................................120
13.3.KeyListener..........................................................................................................................121
13.4.MouseListener.....................................................................................................................122
Bibliografia.......................................................................................................................................123
Introduo
Essa apostila tem como objetivo ajudar ao aluno na disciplina de Introduo a
ProgramaoOrientadaaObjetosdonossocurso,vistoqueorequisitobsicoparaquese
possaalcanartodososobjetivodonossocursonesta
disciplinaqueoalunotenhapassadopeladisciplina
de Introduo a Lgica de Programao para
Computadores. Mas no nos atearemos em
barrlos,sem o prrequisito bsico,isso porque
confiamos e acreditamos na capacidade dos nossos
alunosquecommuitasfora,dedicaoevontadede
vencer na vida,conseguir ultrapassar qualquer
preconceitocontraoacessoaoconhecimentotecnolgico.
Onossoobjetivoprincipalcomestematerialcapacitaroalunoparaumentendimento
criticoarespeitodoParadigmadeProgramaoOrientadaaObjetos.Vistoqueumadas
tendnciaatualmentenomercadosusaresseparadigmanodesenvolvimentodesistemas
emgeral.
Aliado ao Software Livre que uma tendncia e uma alternativa para o mundo
corporativonoqueserefereasoftwares,equetambmtemsido
atualmentedesenvolvidoporprogramadoresespalhadosaoredor
mundo,sendo que boa parte dessas tecnologias veem sendo
desenvolvidas utilizando ferramentas livres na maioria de seus
projetos,contribuindoparaosavanosecolaborandoparaoacesso
demilharesdepessoasasinclusesdigitaisnoquetangeastecnologiasdainformaono
mundo. Daremos tambm a nossa disciplina uma nfase maior no uso desse tipo de
tecnologia,passandoparaosnossosalunosummodeloeumaalternativafantstica,quea
utilizaodasferramentaslivresdisponveisnainternet.
Primeiramentevamosestudarumpoucosobreahistriadalinguagemdeprogramao
java que iremos utilizar na nossa disciplina. Relatamos as caractersticas principais da
linguagemqueparamuitosaindadesconhecido,ouseja,conheceraferramentaantesde
dominladeestremaimportnciaparaosfuturosprogramadores.
Obrigadoprofessor!EusouoTutoreosajudarei,respondendo
asperguntasqueforemsurgindoaolongodonossocurso,mas,
algumas dessas perguntas se dirija ao Instrutor que dever
auxiliarmeuscolegasdesala,osalunos!
Aliasprofessor,porondecomearemosaestudarjava?Nosd
umadica!Calma!Muitacalmameuscolegas.Porqueoejavashow
aindavaicomear.Apresentaremosnestaapostilasnofinaldecada
captulo uma lista muitos dos exerccios,que muitas vezes so
aparentemente repetitivos e at mesmo redundantes. Isso
proposital: se o estudante conseguir resolver um dos exerccios
aparentementerepetidos,poderdeduzirasoluodeoutrosmaisfacilmente.Acriaode
vriosexercciosaparentementeredundantestambmfacilitaaoinstrutornacriaode
listas de exerccios distintas e complementares.
claro!Comearemosaestudarsobreosfundamentosdeprogramaoefalaremosem
seguidasobreasestruturasbsicasdalinguagemjava.
Curso Java SE - UTD 6

Capitulo1. Oquealinguagemjava.
Bem vindos ao futuro! Java no somente uma linguagem de programao, mas sim uma
tecnologia que tem como objetivo construir programas que possam ser utilizados em qualquer
plataformaoucomputador,comomnimopossveldedependnciacomumsistemaoperacionalou
ambientededesenvolvimento.Javapossuiumasintaxeextremamentesimilar doC++,ecom
diversascaractersticasherdadasdeoutraslinguagens,comoSmalltalkeModula3.antesdetudo
umaboalinguagem,simples,comumambientedeexecuodealtaqualidadeeumavastabiblioteca
de classes disponveis. Essa combinao que torna Java uma proposta irresistvel para tantos
programadores. Alm de contar com as seguintes caractersticas,totalmente orientada a
objetos,fortemente tipada, independente de arquitetura,robusta,segura,portvel,bem estruturada,
suportaprogramaodistribuda,multithreadedecontacomgarbagecollection.

1.1. Histricodalinguagem.
Em1991,naempresaSunMicroSystems,foiiniciadooGreenProject,oberodoJavauma
linguagem de programao orientada a objetos. Os mentores do projeto eram Patrick
Naughton,MikeSheridan,eJamesGosling.Oobjetivodoprojetonoeraacriaodeuma
novalinguagemdeprogramao,masantecipareplanejaraprximaondadomundo
digital. Eles acreditavam que em algum tempo haveria uma convergncia dos
computadorescomosequipamentoseeletrodomsticoscomumenteusadospelaspessoas
noseudiaadia.

JamesGoslingespecificouumanovalinguagemdeprogramaoparaoseunovoprojeto
e decidiu batizla de Oak, que quer dizer carvalho, uma
rvorequeelepodiaobservarquandoolhavapelasuajanela.O
prximopassoeraencontrarummercadoparao*7.Aequipe
achavaqueumaboaideiaseriacontrolartelevisesevdeopor
demanda com o equipamento. Eles construram um demo
chamadoMovieWood,masinfelizmenteeramuitocedoparaque
o vdeo por demanda bem como as empresas de TV a cabo
pudessemviabilizaronegcio.Aideiaqueo*7tentavavender,
hoje j realidade em programas interativos e tambm na
televiso digital. Permitir ao telespectador interagir com a
emissoraecomaprogramaoemumagranderedeacabos,era
algo muito visionrio e estava muito longe do que as empresas de TV a cabo tinham
capacidadedeentenderecomprar.
Oprottiposechamava*7(leiaseStarSeven),umcontroleremotocomumainterface
grfica touchscreen. Para o *7 foi criado um mascote, hoje amplamente conhecido no
mundo Java, o Duke. O trabalho do Duke no *7 era ser um guia virtual ajudando e
ensinandoousurioautilizaroequipamento.O*7tinhaahabilidadedecontrolardiversos
dispositivoseaplicaes.
Aideiacerta,napocaerrada.AsortequeobomdaInternetaconteceu,erapidamente
umagranderedeinterativaestavaseestabelecendo.Eraestetipoderedeinterativaquea
equipedo*7estavatentandovenderparaasempresasdeTVacabo.E,danoiteparaodia,
noeramaisnecessrioconstruirainfraestruturaparaarede,emumgolpedesorte,ela
simplesmente estava l. Gosling foi incumbido de adaptar o Oak para a Internet e em
janeiro 1995 foi lanada uma nova verso do Oak que foi rebatizada para Java. A
tecnologia Java tinha sido projetada para se mover por meio das redes de dispositivos

6
Curso Java SE - UTD 7

heterogneos,redescomoaInternet.Agoraaplicaespoderiamserexecutadasdentrodos
BrowsersnosAppletsJavaetudoseriadisponibilizadopelaInternetinstantaneamente.Foi
oestticoHTMLdosBrowsersquepromoveuarpidadisseminaodadinmicatecnologia
Java. A velocidade dos acontecimentos seguintes foi assustadora,o nmero de usurios
cresceurapidamente,grandesplayers,comoaIBManunciaramsuporteparaatecnologia
Java.

1.2. Uso da linguagem no mercado atualmente(especificao das


tecnologias).
Desdeseulanamento,emmaiode1995,aplataformaJavafoi adotadamaisrapidamentedo
quequalqueroutralinguagemde programaonahistriadacomputao.Em2003Javaatingiua
marcade4milhesdedesenvolvedoresemtodomundo.Java continuouecontinuacrescendoe
hojecomcertezaumpadro paraomercadooferecendoqualidade,performanceesegurana
ainda sem nenhum competidor a altura. Atualmente Java a escolha para construir sistemas
robustos,confiveisedistribudos,rodandodesdegrandesservidores,porissotornousepopular pelo
seu uso na Internet e hoje possui seu ambiente de execuo presente em web browsers,
mainframes,SOs,celulares,palmtopsecartesinteligentes,entreoutrosdispositivos.

1.3. Principaiscaractersticasdalinguagemdeprogramaojava
ORIENTAOAOBJETOS:Javaumalinguagemorientadaaobjetosqueseguealinha
puristainiciadapor Smalltalk queconsideradapuramenteO.O equetudonestaso
objetos.Comaexceodostiposprimitivosdalinguagem(char,int,float,etc.),amaior
partedoselementosdeumprogramajavasoobjetos.
Noqueregeesseparadigma,oprojetoorientadoaobjetos
umatcnicadeprogramaoqueseconcentranosdados(=
objetos) e nas interfaces para este objeto. O cdigo
organizado em classes, que podem estabelecer
relacionamentosdeheranasimplesentresi,somenteaheranasimplespermitidaem
java.Humaformade"simular"heranamltiplaemJavacomousodeinterfaces.
SIMPLICIDADE: Java,muitoparecidacom C++,masmuitomaissimples.Javanopossui
sobrecarga de operadores, structs, unions, aritmtica de ponteiros, herana mltipla,arquivos.h,
diretivas de prprocessamento e a memria alocada dinamicamente gerenciada pela prpria
linguagem,queusaalgoritmosdegarbagecollectionparadesalocarregiesdememriaqueno
estomaisemuso.OutroaspectodasimplicidadedoJavaotamanhopequeno.Umdosobjetivos
do Java permitir a construo de software que possa rodar independentemente em qualquer
mquinadepequenoporte.Otamanhodointerpretadorbsicoedosuporteaclassesdecercade
40Kbytes;adicionandoasbibliotecasbsicaspadroeosuportealinhasdeexecuo
(essencialmenteummicrokenelautocontido),tmseoutros175K.
SEGURA:Javafoielaboradaparaserusadaemambientesderededistribuda,por
issopermiteaconstruodesistemaslivresdevruseintruses.Apresenadecoleta
automticadelixo,evitaerroscomunsqueosprogramadorescometemquandoso
obrigadosagerenciardiretamenteamemria(C,C++,Pascal).
A eliminao do uso de ponteiros, em favor do uso de vetores,objetos e
outrasestruturassubstitutivas trazbenefciosemtermosdesegurana.Oprogramador
proibidodeobteracessoamemriaquenopertenceaoseuprograma,almdenoter
chances de cometer erros comuns tais como reference aliasing e uso indevido de
aritmtica deponteiros.Estasmedidassoparticularmente teisquando
pensarmosemaplicaescomerciaisdesenvolvidasparaainternet.

7
Curso Java SE - UTD 8

ROBUSTA: Java foi elaborada para a produo de programas quedevam serconfiveis em


vriossentido.Javapebastantenfasenaverificaorpidadepossveisproblemas,naverificao
dinmicaposterior(emtempodeexecuo),eemeliminarsituaespropensasaerros.Aprincipal
diferena entre Java e C/C++ que Java possui um modelo de ponteiros que elimina a
possibilidadedesobrescreveramemriaecorromperdados.
PROCESSAMENTODISTRIBUDO: AlinguagemdeprogramaoJavapossuiumaextensa
bibliotecaderotinasparalidarcomprotocolosTCP/IP,comoHTTPeFTP.AsaplicaesJavapodem
abrireacessarobjetosatravsdaredeviaURLs,comamesmafacilidadecomqueacessaumsistema
dearquivoslocal.

MULTITHREADING:Mltiplaslinhasdeexecuo.EmJavaumasurpresaagradvelefcil.
Linhas de execuo em Java podem tambm beneficiarse de sistemas multiprocessadores se o
sistemaoperacionaldebaseofizer.Oladoruimqueasimplementaesdelinhasdeexecuonas
plataformas mais importantes diferem radicalmente,e o Java no faz nenhum esforo para ser
neutroemrelaoasplataformasnesseaspecto.Somenteocdigoparachamaro multhreading
permaneceomesmoparatodasasmquinas.
EXCEES: Todo programador em geral est bastante acostumado com o computador
"travando"porcausadeumerroemumprograma.EmC++,porexemplo,asimplestentativade
abertura de um arquivo inexistente pode obrigar ao programador a reiniciar o computador.
ProgramasJava,contudo,no"dopau"nocomputador,jqueamquinavirtualJavafazuma
verificaoemtempodeexecuoquantoaosacessosdememria,aberturadearquivoseumasrie
deeventosquepodemgeraruma"travada"emoutraslinguagens,masquegeramexceesem
programas Java. Em geral, ao escrever programas Java utilizandose de herana de classes
predefinidas,foraseemgeralaoprogramadorescreveralgumasrotinasdetratamentodeexceo,
umtrabalhoque,sedeinciopodeparecerforado,irpouparoprogramadordebastantedorde
cabeanofuturo.
GARBAGE COLLECTOR: Em Java, os programadores no necessitam preocuparse com o
gerenciamento de memria como em C++. Em C++, todo bloco de memria alocado
dinamicamente (com new, malloc ou funo similar) deveria ser liberado
quando no fosse mais usado (com free, delete e parentes prximos). Isso
acarretava diversos problemas mesmo ao programador mais experiente, que
tinha que manter sempre um controle das reas de memria alocadas para
poder liberlas em seguida. Java, ao contrrio, utilizase de um conceito j
exploradopelalinguagemSmalltalk,queode garbagecollection (coletade
lixo). Sua funo a de varrer a memria de tempos em tempos,liberando
automaticamenteosblocosquenoestosendoutilizados.Seporumladoisso
podedeixaroaplicativoumpoucomaislento,pormanterumathreadparalela
que dura todo o tempo de execuo do programa,evita problemas como
refernciasperdidaseavisosdefaltadememriaquandosabesequehmegas
emegasdisponveisnamquina.
COMPILADAEINTERPRETADA: UmadascaractersticasdeJavaquetornouaidealpara
seuusonaelaboraodeaplicativosdistribudosfoiasuaindependnciadeplataforma.Issoporque
ocompiladorgera um formatodearquivode objetosneutro em relaoa arquitetura,ocdigo
compiladoexecutvelemvriosprocessadores,desdequehajaapresenadosistemaemtempode

8
Curso Java SE - UTD 9

execuoJava.Ocompiladorjavaconsegueissogerandoinstruesbytecodequenotemnadaa
vercomumaarquiteturacomputacionalespecfica.Aocontrrioelessoelaboradosparaserde
fcil interpretao em qualquer mquina e de fcil traduo para cdigo de mquina nativo
imediatamente.
MQUINAVIRTUAL: umamquinaimaginriaqueimplementadaatravsdeum
softwareemuladoremumamquinareal.

AJVMprovespecificaesdeplataformadehardwarenaqualcompilasetodocdigo
detecnologiaJava.EssasespecificaespermitemqueosoftwareJavasejaumaplataforma
independentepoisacompilaofeitaporumamquinagenricaconhecidacomoJVM.

PORTVEL: AocontrriodoCeC++queno
existem aspectos da especificao que sejam
dependentesdaimplementao.Ostamanhos dos
tipos de dados primitivos so especificados,bem
como o comportamento da aritmtica neles. Por
exemplo em Java um int sempre um nmero
inteiro de 32 bits,enquanto que em C/C++, int
podesignificaruminteirode16bitsouuminteiro
de 32 bits. Com o tamanho fixo para tipos
numricos eliminase acausa de grandedores de
cabea relacionadas a portabilidade. A
portabilidade em java atingida atravs da
utilizaodebytecodes.Bytecodeumformatode
cdigointermedirioentreocdigofonte,otextoqueoprogramadorconseguemanipular,
e o cdigo de mquina, que o computador consegue executar. Na plataforma Java,o

9
Curso Java SE - UTD 10

bytecode interpretadoporumamquinavirtualJava.AportabilidadedocdigoJava
obtidamedidaquemquinasvirtuaisJavaestodisponveisparadiferentesplataformas.
Assim,ocdigojavaquefoicompiladoemumamquinapodeserexecutadoemqualquer
mquina virtual Java,independentemente de qual seja o sistema operacional ou o
processadorqueexecutaocdigo.
JAVAEAINTERNET: Os programasjavaquerodamempginaswebsochamadosapplets.
Parausarapplets, vocprecisadeum navegadorwebhabilitadoparaJava,oqual executaros
bytecodes para voc. Em particular servidores de aplicao podem usar as capacidades de
monitoramentodamquinavirtualjavapararealizaroequilbrioautomticodecarga,controlede
conexesabancodedados,sincronizaodeobjetos,desligamentoereinicializaoseguros,almde
outrosserviosnecessriosparaaplicaesescalveisdeservios,masquesonotoriamentedifceis
de se implementar corretamente. Em java, possvel escrever aplicaes completas,inclusive
acessandobancosdedadosrelacionaisindependentementedoservidorweb,bemcomopossvel
implementarosnveisdeinterfacecomousurioedelgicadonegocio,utilizandoumservidorde
bancodedadosparaimplementaronveldeacessoaosdados.

Distribuiodatecnologiajava: OJ2SE(Java2StandardEdition)ouJavaSEuma
ferramenta de desenvolvimento para a plataforma Java. Ela contm todo o ambiente
necessrioparaacriaoeexecuodeaplicaesJava,incluindoamquinavirtualJava
(JVM),ocompiladorJava,asAPIsdoJavaeoutrasferramentasutilitrias.
JME, java Plataforma,Micro Edition (Java ME),ainda conhecida por J2ME, uma
tecnologia que possibilita o desenvolvimento de software para sistemas e aplicaes
embarcadas, ou seja, toda aquela que roda em um dispositivo de propsito
especfico,desempenhandoalgumatarefaquesejatilparaodispositivo. aplataforma
Javaparadispositivoscompactos,comotelemveis,PDAs,controlesremotos,eumaoutra
gamadedispositivos.
Java EE (ou J2EE, ou Java 2 Enterprise Edition, ou em portugus Java Edio
Empresarial) uma plataforma de programao de computadores que faz parte da
plataforma Java. O JEE (Java Enterprise Edition) a plataforma Java voltada para
redes,internet,intranetseafins.Assim,elacontmbibliotecasespecialmentedesenvolvidas
para o acesso a servidores,a sistemas de email,a banco de dados,etc. Por essas
caractersticas,oJEEfoidesenvolvidoparasuportarumagrandequantidadedeusurios
simultneos. A plataforma JEE contm uma srie de especificaes,cada uma com
funcionalidadesdistintas.Queso:
JDBC(JavaDatabaseConnectivity),utilizadonoacessoabancodedados.
JSP (Java Server Pages),um tipo de servidor Web. Os servidores web so as
aplicaesquepermitemavocacessarumsitenainternet.
Servlets,paraodesenvolvimentodeaplicaesWeb,isto,esserecurso"estende"o

10
Curso Java SE - UTD 11

funcionamentodosservidoresweb,permitindoageraodecontedodinmiconos
sites.

1.4. Ambienteseferramentasdedesenvolvimentocomjava.
Atecnologiajavafornececomoambientededesenvolvimentoumgrandeconjuntode
ferramentas que engloba: um compilador,um interpretador,um gerador de
documentao,ferramentadeempacotamentodeclassesdearquivoseoutros.

1.4.1. InstalaodoJDKouSDKeJREesuasconfiguraes.
A Sun a empresa proprietria do Java que atualmente pertence a empresa (Oracle). Ela
disponibiliza,basicamente,duasversesdesuamquina
virtual:oJRE(JavaRuntimeEnvironment)eJDK(Java
DevelopmentKit).OJREcontmamquinavirtualque
permite rodar programas feitos na linguagem Java em
uma mquina. O JDK, por sua vez, um pacote para
desenvolvedores programarem suas aplicaes em Java,
possuindo vrios utilitrios, inclusive compilador e
bibliotecas. UmadasversesmaisusadasdoJavafoia
1.4.x,quepossuainclusiveumvisualumpouco(paraser
modesto)rstico.MaisparafrenteaSunlanouaverso
1.5.0,comvriasmelhoriasemtermosdeprogramaoe
umvisualumpoucomelhor.Foilanadoemdezembrodo
de2006oJava1.6.0,conhecidotambmcomoJava6,
que trouxe,finalmente,uma integrao total com o
desktopemtermosvisuais,evriasmelhoriastambmparaquemprogramador.
Mustangonomedadoparaanovaverso6deJava,quesaiunofinaldoanopassado.
Entreasnovidadesmaisconhecidasestoosuportealinguagensdescript,melhoresferramentas
paraomonitoramentodeaplicaesJavaemaisintegraocomosistemaoperacional.Masoqual
realmenteadiferenaentreoJDKeJavaSDK?:O kitdedesenvolvimentoparajava(Sofware
DevelopmentKit).Tratasedeumconjuntodesoftwaresparaprogramadoresemjavaquevocno
precisa instalar se sua inteno for apenas usar os programas feitos em java. Para rodar os
programasemjavabastainstalaroJRE(JavaRuntimeEnvironment).
http://www.guiadohardware.net/tutoriais/javalinux/

1.5. Meuprimeiroprogramaemjava
Comojavaumalinguagemqueprimeiramentecompiladaeemseguidainterpretada.
Para compilar e executar um programa escrito nessa linguagem devemos o primeiro
construiroarquivocomoocdigofonte,quedevetercomoextenso.java.Quenocasodo
exemplooarquivofoichamadodeHelloWorld.java.Emseguida,ocdigofontecompilado
eumprogramafonteembytecodes(HelloWorld.class)gerado.Duranteacompilao,h
umachecagemdeerrosdocdigofonte.Ofonteembytecodesssergeradosenenhum
erro tiver sido detectado. Por fim, qualquer dispositivo que execute java ser capaz de
interpretar este novo arquivo fonte e executar a aplicao. Os bytecodes so lidos e
executados (ou seja, interpretados) pela Mquina Virtual Java (JVM Java Virtual
Machine) em um computador,em um celular, etc., alm de serem independentes de
plataforma.

11
Curso Java SE - UTD 12

Ageraodosbytecodesou,paraoexemplo,doarquivoHelloWorld.classfeitaapartir
daexecuodocomandojavacHelloWorld.java.Ento,oprximopassofazercomque
aJVMexecuteoarquivoHelloWorld.java,atravsdocomando javaHelloWorld.class .
Dessa maneira,a JVM traduz o cdigo compilado para uma linguagem que a mquina
entenda e o programa executado,por isto os programas em java podem executar em
qualquerplataformadehardwareousoftwarequepossuaumaversodaJVM.AMquina
Virtualjavadefinidacomoumamquinaimaginriaimplementadaatravsdaemulao
emumsoftwareexecutadoemumamquinareal.Elapossuiumaarquiteturaquepermite
garantirsegurana.QuandoumprogramaJavaexecutado,seusbytecodessoverificados
pelaJVMparaqueestejamdeacordocomosseusrequisitosdesegurana,impedindoa
execuodecdigocomalgumairregularidade.Assim,cdigosfontecominstruesque
acessem reas restritas da memria ou at mesmo recursos do hardware no so
executadospelaJVM.

Apalavrapublicindicaqueaclasseterumnveldeacessopblico,ouseja,queelaser
acessvelporqualquerclasse.Apalavraclassindicaqueumaclasseestsendodeclaradae
seunomeHelloWorld.A{delimitaolimiteinicialdaclasse.

A palavra public j foi descrita, portanto permite que o mtodo seja acessado
publicamente.Apalavra static serdescritaposteriormente.Olugarondeficaapalavra
voidondesedeveindicarotipoderetornodomtodo.Nestecaso,noretornanenhum
valor,dessamaneiraomtododeclaradocomovoid.OconjuntoString[]argspresentes
entre ( ) so os argumentos do mtodo. Neste exemplo,o mtodo possui um nico
argumento(umvetordeStringsdenominadoargs.A{delimitaolimiteinicialdomtodo.
A terceira linha consiste no contedo do mtodo principal, formado apenas por um
comando,ouumainstruoquecompostadeumaoumaislinhasterminadasporpontoe
vrgula.Exemplo:

O System.out.println usado para exibir algo na sada padro, por padro, na linha de
comando.Serexibidooquetiverentre(),nocaso,Helloworld.Nofinaldestecomando,temse
um;queofinaliza.Porfim,hduasfechachaves } } ,quedelimitamofimdomtodoeda
classe,respectivamente.
Blocosdecdigo:Umblocoformado
por
uma ou mais instrues agrupadas
entrechavesindicandoqueformamuma
sunidade.Blocospodemserorganizadosemestruturasaninhadas
Indefinidamente.Qualquerquantidadedeespaosembrancopermitida.Umexemplo
de blococdigomostradoaoladoilustraperfeitamentecomoso organizadasasestruturasde

12
Curso Java SE - UTD 13

blocos.

1.5.1.ComentriosemJava:
Comentriossonotasescritaspeloprogramadorparafinsdedocumentao.Estasnotas
nofazempartedoprogramaenoafetamofluxodecontrole.Javasuportatrstiposde
comentrios: comentrio de linha estilo C++,comentrio de bloco estilo C e um
comentrioestiloJavadoc(utilizadocomporadocumentaodoprograma).
Comentrio de linha: Comentrios com estilo em C++ se iniciam por "//". Todo e
qualquertextocolocadoapsas//ignoradopelocompiladoretratadocomocomentrio.
Porexemplo:

Comentriodebloco:ComentrioscomestiloemC,tambmchamadosdecomentrios
multilinhas,se iniciam com /* e terminam com */. Todo o texto posto entre os dois
delimitadorestratadocomocomentrio.DiferentedocomentrioestiloC++,estepode
seexpandirparavriaslinhas.Porexemplo:

Comentrio estiloJavadoc: Estecomentrioutilizadonageraodadocumentao


emHTMLdosprogramasescritosemJava.ParasecriarumcomentrioemestiloJavadoc
deveseiniciarocomentriocom /** eterminlocom */.Assimcomooscomentrios
estilo C, este tambm pode conter vrias linhas. Este comentrio tambm pode conter
certastagsquedomaisinformaesdocumentao.Porexemplo:

1.5.2. CompilandomeuprimeiroprogramaemJava
1Passo:ParacompilarmosonossoprimeiroprogramaemJavautilizamososeguintecomando
javac seguindo do nome da
classe(ponto).java

2Passo:Paraexecutarmoso
nossoprimeiroprogramaemJavautilizamososeguintecomandoJava,seguidodonomedaclasse.

Nesse segundo exemplo vamos usar um editor de texto qualquer para editor o
cdigofontedonossosegundoexemploevamoscompilarusandoterminal(Konsole)do

13
Curso Java SE - UTD 14

sistemaoperacional.

Compilandonosso2exemplocomocomandojavac

Executandonosso2exemplocomocomandojava

Obs.: Cuidadosimportantesaseremtomados:

SeojavacreclamarquenoachaaclasseHelloWorld.java,porquvocnoestno
diretriocorretoousalvouoarquivoemoutrolugar.
Seojavacreclamardealgumerronofonte,porquevocdigitoualgoerrado.Notroque
letrasmaisculasporminsculaseviceversa,emnenhumapartedocdigo!
Finalmente,ANTESdechamaroseuinstrutorparaeleinserirum;oufecharumachave
noseucdigo,revisemaisumavezoseucdigocompletamente.

1.5.3. Dicaspararesoluodeproblemasemprogramasjava
Se digitar o programa na mo,certifiquese de prestar ateno as letras maisculas e
minsculas.Emparticularumnomedeclasseporexemplo.
SereceberumamensagemcomoBadcommandorfilenameoujavaccommandnot
found,volteeverifiquenovamenteasuainstalao,emparticularaconfiguraodocaminhode
execuo.

Ocompiladorrequerumnomedearquivo(Teste.java)porexemplo.Quandovocrodaro
programa,vocespecificaumnomedeclasse(Teste)semaextenso.javanem.class.
Seocompiladorjavacrelatarumerroconnotread:Teste.java,vocdeveverificarse
essearquivoestpresentenodiretrio.
Sehouvererrosdemaisemseuprograma,todasasmensagensdeerrosvoaropelasua
telamuitorapidamente.Ocompiladorenviaasmensagensdeerroparaasadapadro;ento,um
poucocomplicadocapturlasseelasocuparemmaisespaodoqueajanelapodeexibir.

14
Curso Java SE - UTD 15

1.6. Erroscomumemprogramasjava

1.6.1. Errosemjava:
Duranteodesenvolvimentodeprogramas,muitocomumqueerrospodemocorrer,emjava
podeseremdoisdomnios:tempodecompilaoetempodeexecuo.

1.6.2. Erroemtempodecompilao:
Errosocorridosduranteafasedecompilaoocorremquandose executaojavac,esofceisde
corrigir.Hdoistipos:
Errosdeprocessamentodoarquivo(parsing):pontoevrgulafaltando,parnteses,
aspas,chavesoucolchetesdescasados.Identificaapenasoarquivoealinhaondeoerro
podeteriniciado.Umerrocausavriosoutrosenemsempreamensagemprecisa.
Errosdecompilaodocdigo,realizadadepoisdoparsing:almdalinhaedo
arquivo,identificamaclasseemtodo.Geralmenteasmensagenssobastanteelucidativas.

1.6.3. Erroemtempodeexecuo:
Erros que ocorrem duranteo tempo de execuo (runtime) ocorrem quandoseexecutao
interpretadorjava,esomuitomaisdifceisdelocalizareconsertar.
Exceptioninthread"main":NoClassDefFoundError:Classe:aclasse"Classe"no
foiencontradanoCLASSPATH.
Exceptioninthread"main":NoSuchMethodError:main:osistematentouchamar
main()masnooencontrou.
ArrayIndexOutOfBoundsException: programa tentou acessar vetor alm dos
limitesdefinidos,ounegativo.
NullPointerException:refernciaparaobjetonula,ouvariveldeumtipoobjeto
foideclaradamasnoinicializada.

1.7. Netbeans
OtermoIDEemingls,quequerdizer(Integrated
Development Environment). O NetBeans IDE um
ambiente de desenvolvimento integrado e est
disponvel para Windows, Mac, Linux e Solaris. O
projeto NetBeans consiste em um IDE de
cdigofonteabertoeumaplataformadeaplicaes
que permitem que os desenvolvedores criem
rapidamenteaplicativosweb,corporativos,desktope
aplicaesmveisutilizandoaplataformaJava,bemcomoJavaFX,PHP,JavaScripteAjaxRubye
RubyonRails,GroovyeGrails,eC/C++. OprojetodoNetBeans apoiadoporuma
vibrante comunidade de desenvolvedores e oferece uma extensa documentao e
treinamentoderecursos,bemcomoumadiversificadaseleodeterceirosplugins.
IDE6.9introduzoJavaFX,Compositorumaferramentavisualparaconstruodelayout
visualJavaFXaplicativos,interfacegrficasemelhanteaoconstrutordeGUISwingpara
aplicaes Java. SE NetBeans Outros destaques incluem OSGi Plataforma de
interoperabilidadeparaaplicaesNetBeanseapoioparaodesenvolvimentodebundles
OSGicomMaven,oapoioJavaFXSDK,FrameworkZendparaPHPeRubyonRails3.0,

15
Curso Java SE - UTD 16

bemcomomelhoriasnoeditordeJava,JavaDebuggerproblemaderastreamento,emuito
mais.Parabaixaronetbeansacesseositedolink:
http://www.netbeans.org/

1.8. VisodeoutrasIDEsparaodesenvolvimentocomjava

1.8.1.IDEEclipse

O Eclipse uma IDE para o desenvolvimento aplicaes


Java,ele tambm pode ser usado para o desenvolvimento de
aplicaesutilizandooutraslinguagenscomoPHP,C++,etc.O
Ambientededesenvolvimentomultilinguagensdeprogramao
cujoprojetopatrocinadopelaIBM.bastanteflexveleintegra
com vrios projetos bastante comuns na comunidade java tais como cvs
(versionamento),ant(scripts)ejunit(testesunitrios).Nopossuiaindaumbomeditorvisualde
interfacegrfica.Oatual,chamadovisualeditor(VE)funcionacomSWTeSwingmasaindaestna
verso 0.5. O desenvolvimento J2EE vivel com o uso deplugins obtidos de terceiros. Nesta
apostilanoiremosnosaprofundanessaIDE,maspodebaixareinstalarnoseusistemaparcriar
seusprojetodeprogramaocomjavausandoaIDEEclipse.OEclipseatualmenteencontrasena
verso 3.6 chamada de HELIOS,para baixlo acesse o seguinte link ao lado:
http://www.eclipse.org/

1.8.2. AIDEBluej
BlueJ um ambiente de desenvolvimento java projetado
especificamenteparaoensinoemumnvelintrodutrio.BlueJfoi
projetadoeimplementadopelasequipesdasuniversidadeMonash
University,Melbourne,Australia e The University of Southern
Denmark,Odense.MaioresinformaessobreBlueJestodisponveisno
site oficial (http://www.bluej.org). O BlueJ um excelente ambiente
paraofimaquesedestina:aaprendizagemdaprogramaoorientadapelosobjetosutilizandoa
linguagem Java. Noentanto e especialmentequando utilizada uma linguagem muitopopular
como a linguagem Java,o desenvolvimento de programas feito utilizando IDEs muito mais
complexosesofisticados.Talnecessrioparalidarcomacomplexidadedemuitosdosprogramas
atuais.
Estes atingem frequentemente dezenas de milhares de linhas de cdigo e, em alguns casos,
muitas,muitasmais.Talimplicaautilizaodevriasferramentasdeauxlioaodesenvolvimento
de cdigo. BlueJ 3.0.4,uma verso de manuteno que inclui uma srie de correes de erros
importantes,estagoradisponvelparadownload.

1.8.3. AIDEGel
um editor pequeno e rpido.Escrito em Delphi para computadores com Windows. Destaca
sintaxe para java,jsp,xml, html entre outras gramticas, facilita o gerenciamento de projetos,
mantmhistricolocaldemudanas,possuisuporteaCVS,JUniteAntentreoutrasfacilidades.
Livre para uso comercial.Mais informaes sobre essa IDE visite o site:
http://www.dukeduck.com.br/

1.8.4. AIDEJdeveloper
Uma das principais opes open source,uma terceira boa opo

16
Curso Java SE - UTD 17

existedesdequeaOracletornouseuIDEJdevelopertotalmentegratuito.Issodevidoao
fato de a Oracle tornar open source dois frameworks de desenvolvimento Java: o
mecanismo de persistncia Oracle TopLink (se tornou a base da implementao de
referncia JPA do Glassfish) e os componentes JavaServer Faces (JSF) Oracle ADF
Faces,partedoOracleAplicationDevelopmentFramework.Sodoistimosrecursoseoseu
usonodesenvolvimentoesttotalmenteintegradoesuportadonoOracleJDeveloper.
O Oracle JDeveloper assim uma opo gratuita abrangente e amadurecida para o
desenvolvimentoJavacorporativo,principalmenteemambientesondeprodutosOraclej
soutilizados(DatabaseServer,BI,ApplicationServer,Portal).http://www.oracle.com/

Nota:Muitobem!Apartirdaquificaacritriodeseuinstrutorautilizaoounodeuma
IDEdedesenvolvimentodesoftwareduranteocursodanossadisciplina.UsodeumaIDE
vai nos facilitar em muito pontos importantes,dentre eles a aproximao com uma
ferramenta utilizada no mercado de trabalho atualmente,vai tornar o aluno mais
preparadoparaenfrentarasdificuldadesdecorrentesdeprogramaremumsimpleseditor
detextoeprompt,mas,tambmmuitoimportantequevocsaprendamacompilarseus
programa no Console(prompt de comandos)para da ento ficarem habilitados a
seguerem programando em java. Fica ai orecado e bons trabalhos.Vamos usara IDE
netbeans.Segueumtoturialsobreonetbeansqueserrepassadoantes.

1.9. Identificadoresepalavraschaves.
Java uma linguagem centrada nos pacotes; os desenvolvedores da
linguagem assumiram que, para uma boa organizao de nomes, seria
fundamental na estrutura de programas em java. Imagine o seguinte
pesadelo:trs programadores,na mesma empresa,mas trabalhando em
diferentes partes de um projeto,escrevem cada um uma classe chamada
Utilitrios.SeessastrsclassesUtilitriosnotiveremsidodeclaradasem
nenhumpacoteexplcito,eestiveremnoclasspath,noseriapossveldizeraocompilador
ouJVMqualdastrsclassesesttentandoreferenciar.
Identificadoreslegaissoregrasqueocompiladorusaparadeterminarseumdadonome
legal. Em Java,os identificadores devem ser compostos apenas por caracteres.
Unicode,nmeros,smbolosdemoedasecaracteresdeconexocomounderscore.
Regrasvlidas:
Deveminiciarcomumaletra,smbolocomercialcifro($)ouunderscore(_);
Apsoprimeirocarcterpodemterqualquercombinaodeletras,caracterese
nmeros;
Nopossuemlimitedetamanho;
Nopodemserpalavrasreservadasrestritasdalinguagem;
Em Java os identificadores so casesensitive isto , JAVA totalmente
diferentedejavaissoporqueocompiladordiferenciamaisculosdeminsculos.

17
Curso Java SE - UTD 18

Palavraschave :Soidentificadoresque,emJava,foramprdefinidascompropsitos
especficos. No se pode usar esses identificadores como nomes de variveis, mtodos,
classes,etc.Aseguir,temosalistacomaspalavraschaveemJava.

Nota:true,falseenullnosopalavraschave,porm,sopalavrasreservadas,e,da
mesmamaneira,nopermitidoseuusonaatribuioanomesdevariveis,mtodosou
classes.

1.10.Tiposprimitivos:
Todoprogramadecomputadordevesercapazdelidarcomdadosparaconseguirfazer
seus processos como, por exemplo, somar,
multiplicar,dividir,etc.Usaratributos amelhor
forma de manipular osdados.Ostiposdedados
so o que definem a quantidade de memria do
computador que ser utilizado para guardar tal
dado.As variveis primitivaspode serdeclaradas
como variveis de classe(static), variveis
instncias, parmetros de mtodos ou variveis
locais.Umavezdeclarado,seutipoprimitivono
podenuncasermodificado,emboranamaioriados
casosseuvalorpossasemodificar.Javaumlinguagemfortementetipada.Issosignifica
quetodavariveldeveterumtipodeclarado.Existemoitotiposprimitivosemjava.Quatro
delessodotipointeiros;doissodotipodenmerosdepontoflutuante;umotipode
caractereschar,usadoparaunidadesdecdigonoesquemadecodificaoUnicodeeum
delesdotipolgicoparavalorestrue/false(verdadeiro/falso).

1.10.1. Usodevaloresliteraisdetodosostiposdedadosexistentes.
Um literal primitivo simplesmentea representao do cdigofontedostiposdados
primitivosemoutrospalavrasuminteiro,umnmerodepontoflutuante,umbooleanou
caracteresquevocdigiteenquantoescreveumcdigo.

18
Curso Java SE - UTD 19

1.10.1.1. LiteraisInteiros:
H trsmaneirasderepresentarnmerosnalinguagemJava:decimal(base10),octal
(base8)ehexadecimal(base16).

1.10.1.2. Literaisdecimal:
Os inteiros decimais no precisam de explicao,eles so representados da maneira
tradicional,semprefixodenenhumtipo,comonoexemploabaixo:

1.10.1.3. Literaisoctal:
Osinteirosoctaisusamsomentedgitosde0a7.EmJava,ointeirorepresentadona
formaoctalcomainclusodeumzeronafrentedonmero,vejaoexemploabaixo:

1.10.1.4. Literaishexadecimal:
Osnmeroshexadecimaissoconstrudoscomousode16smbolosdistintos.Jque
noforamcriadossmbolosnumricosunitriosparaosalgarismosquevode10a15,
usamoscaracteresalfanumricospararepresentaressesdgitos.

NaJavalinguagemtodososliteraisinteiros(octal,decimalehexadecimal)sodefinidos
comoint(ousejainteiros)porpadro,mastambmpodemserrepresentadoscomoLong
comainclusodeumsufixoLouldepoisdonmero:
Exemplos.

19
Curso Java SE - UTD 20

Os tipos de dados inteiros que so os mais conhecidos e mais simples. Em Java, os


nmerosinteirossodivididosemquatrotipos:byte,short,intelong.
O tipo byte odemenoralcanceentreosinteiros.Comooprprionomesugere,ele
consomeapenasumbyte(8bits)epodeguardarvaloresentre128e127.

Otiposhortguardainteirosde2bytes(16bits)epodeguardarnmerosentre32.768a
32.767.

Otipointotipodedadomaiscomum.Eleconsome4bytes(32bits)eguardavalores
entre2.147.483.648e2.147.483.647.

Longotipodedadocommaioralcanceentreosinteiros.Consequentemente,tambm
o que ocupa mais espao (8 bytes ou 64 bits). Tem um grande alcance que fica entre
9,22E+18 (exatos 9.223.372.036.854.775.808) e 9,22E+18 (exatos
9.223.372.036.854.775.807).

1.10.1.5. Literaisdepontoflutuante:
Osnmerosdepontoflutuantesodefinidoscomumnmero,umsmbolodecimaleos
outrosnmerosquerepresentamafrao.Paranmerodecimaisfracionrioscomgrande
preciso ou valores extraordinrios (geralmente utilizados em matemtica aplicada e
complexacomoclculosfsicos,qumicos,astrolgicos,meteorolgicos,etc)utilizamoso
tipodedadodouble.

DoubleotipodedadomaiscomplexoqueexisteemJavaeomaiorvalorpossveldese
armazenar1,797.693.134.862.315.7E+308.Muitomaisdoquequalquerprogramador
precisa.

20
Curso Java SE - UTD 21

FloatosliteraisdepontoflutuantesodefinidosDouble(64bits)porpadro,portanto,se
desejarmosatribuirumliteraldepontoflutuanteaumavarivelfloat(32bits),terque
anexarosufixoFoufaonmero.Senoofizer,ocompiladorreclamardeumapossvel
faltadepreciso,porqueestartentandoinseriremumcontainer(potencialmente)menos
preciso.

1.10.1.6. Literaisbooleanos:
Osliteraisbooleanossoarepresentaodocdigofonteparavaloresboolean.Umvalor
booleanspoderserdefinidocomotrueoufalse.

1.10.1.7. Literaisdecaracteres:
Oliteralcharrepresentadoporumnicocaractereentreaspassimples.Elespodem
tambm representar valores Unicode do caractere,usando a notao Unicode que
acrescentaoprefixo\uaovalor,atribuirumliteralnumrico,contantoqueeleestejano
intervalode16bitssemsinal(65535oumenor).
Vlidos:


Invlidos:

21
Curso Java SE - UTD 22

1.10.1.8. LiteraisparaString:
O literal destringarepresentaodocdigofonteparaovalordeumobjetoString.
Emboraasstringsnosejamprimitivas,foramincludasnestecapituloporquesoutilizadas
para representar valores literais,em outras palavras,digitadas diretamente no cdigo.
VeremosmaissobreStringsnocapitulo9.
Exemplo01:

1.11.OperadoresemJava:
Os operadores em Java produzem novos valores a
partir de um ou mais valores ,os quais so itens
esquerda ou a direita do operador. O resultado da
maioriadasoperaesumvalorboleanoounumrico.
importante lembrar que na linguagem Java no
possvelsobrecarregarosoperadores.Umdosobjetivos
dalinguagemjavaaportabilidade.poristomuitosprocessadoresdaintelcomputamx*y
e deixam em registrador de 80 bits,em seguida dividem por z e finalmente truncam o
resultadodevoltapara64bits.Issopodegerarumresultadomaisprecisoepodeevitaro
estourodeexponentes.Masoresultadopodeserdiferentedeumacomputaoqueusa64
bitsotempotodo.
Por esse motivo a especificao inicial da mquina virtual java exigia que todas as
computaes fossem truncadas. No somente as computaes truncadas podem causar
estouro,como tambm so,na verdade mais lentas do que as computaes mais
precisas,porqueaoperaodetruncamentodemorada.Poressarazo,alinguagemde
programaojavafoiatualizadaparareconhecerasexignciasconflitantesdedesempenho
otimizadoereprodutibilidadeperfeita.

22
Curso Java SE - UTD 23

1.11.1. Operadoresdeatribuiocomposto.
Os operadores de atribuio
compostos permitem que os
programadorespreguiososeconomizem
algum trabalho de digitao. Na
verdade,existemcercade11operadores
deatribuiocomposto,masapenasos4
maiscomumenteusadosso:(+=,=,
*=,/=).

Exemplosemusaroperadorcomposto:

Exemplousandooperadorcomposto:

Nota:Importantelembrarqueasduasatribuiesmostradasdonomesmoresultado
queasduasprimeiras.

23
Curso Java SE - UTD 24

1.11.2. Operadoresdecomparao.
==iguala.
!=diferentede.
Nalinguagemjavasoutilizadosdoisoperadoresdecomparao(chamadostambmde
operadoresdeigualdadeoudesigualdade)quecomparadoisitenssemelhanteseretornam
umvalorbooleanoquerepresentaoqueverdadeirosobreosdoisitensseremiguais.
Exemploutilizandoooperadordeigualdade:

Exemplo02:

Exemploutilizandoooperadordediferente:

Exemplo 02:

1.11.3. Igualdade de tipos primitivos:


A maioria dosprogramadoresjavaestofamiliarizadoscomacomparaodevalores
primitivos.Issoporquecadacomparaopodeenvolverdoisvaloresnmeros(incluindoo
tipochar),doisvaloresbooleanosouduasvariveisderefernciasdeobjetos.Oqueno
podesercomparado:nopossvelcomparartiposdadosincompatveis,porexemploseum
tipobooleanigualaumtipochar.Existemquatrotiposdeitensquepodemostestar:
Nmeros
Caracteres
Tiposbooleanosprimitivos
Variveisderefernciasdeobjeto;pormimportantelembrarqueooperador
(==)examinaovalordavarivel,ousejaopadrodebits.

24
Curso Java SE - UTD 25

1.11.4. Igualdadedevariveisdereferncias:
Asvariveisderefernciaspodemsertestadascomooperador(==)parasabermosse
estoreferenciandoumobjetoemcomum.Masmuitoimportanteressaltarqueomesmo
operador estar examinando osbits da
varivel,portanto com relao as
variveis de referncias, se os bits das
duas variveis forem idnticos, elas
estaro referenciando (apontando) o
mesmoobjeto.

Nesteexemplodocdigoacima,foicriadotrsvariveisderefernciaapartirdaclasse
Funcionrio.Asduasprimeirasf1ef2,soobjetosdeFuncionriodiferentes,queporacaso
temomesmovalorinicial,aterceiravarivelderefernciaf3,inicializadaparareferenciar
omesmoobjetoqueavarivelf1estreferenciando.Ooperador==notestarsedois
objetos so significativamente equivalentes,isso porque ele compara os bits das
variveis,entoasrefernciadememriasdasvariveisnosoaiguais.

1.11.5. Operador Instanceof:


Permitenossaberseumobjetopertenceaumaclasseouno,ousejaseoobjetopassano
testeum.Esteoperadorusadosomentecomvariveisderefernciasdeobjetos,epode
serempregadoparaverificarseumobjetodotipoespecfico.Quandotratamosdetipos,
queremosdizertipodeinterfaceouclasse.Emoutraspalavras,seoobjetoreferenciadopela
varivelesquerdadooperadorpassarianotesteumdotipodeinterfaceouclassedo
ladodireitodooperador.
Sintaxedooperadorinstanceof:
if(tipo_1instanceoftipo_2)
{
/**blocodecdigoaqui...*/
}

25
Curso Java SE - UTD 26

Exemplo01.

Exemplo02.

Nota:Nesteexemploaconteceumerrodecompilao;issoporqueavarivel[e]do
tipoStringenodotipoFuncionrio,nessecasoasclassesnoparticipamdarvorede
herana.
Exemplo03:

1.11.6. Operador concatenao de strings:


Osinaldeadio(+)tambmpodeserusadoparaconcatenarduasstrings.Seumdos
valores for uma String, o operador + atuar como um operador de concatenao de
Strings.Eseosdoisvaloresforemnmeros,ooperando+funcionarcomoooperadorde
adio.
Exemplo01.

Resultado do cdigo acima, executado dentro de uma classe que possua o mtodo
main().

26
Curso Java SE - UTD 27

Exemplo02.Resultadodocdigosermostradoaolado,executadodentrodeumaclasse
quepossuaomtodomain().

1.12.Operadoresaritmticos.

Elespodemserusadosdamaneirapadro.Exemplos:

1.12.1. Operadorresto(%):
Ooperadorrestodadivisodivideooperandoaesquerdapelodireitocomoresultado
sendoorestodessadiviso.

27
Curso Java SE - UTD 28

1.12.2. OperadoresdeIncrementoeDecremento:
Soosoperadoresquenospermitemincrementarasvariveisemumaunidade.Podem
ser usados diante ou atrs da varivel dependendo das necessidades, ou seja, se
precisarmosqueseincrementeouviceversaantesdeutilizarouocontrrio.

Exemplo01:

OBS:
R1temosoresultado=5,poisnessecaso,primeiroimprimimosovalororiginalda
varivel,logoemseguidaincrementamosovalor.
R2temosoresultado=6,poisnessecaso,mostramosavarivelincrementadapelo
comandointerior,pormnessemomentonoalteramosovalordavarivel.
R3 temosoresultado=7,poisnessecaso, incrementamosprimeiroavarivel,
depoismostramosavarivelincrementada.
Podemosterumprocessosemelhandocomodecremento.
Exemplo 02:

1.12.3.
1.12.4.
1.12.5.
1.12.6. OBS:Adiferenaquenessecasopodemosvisualizarosresultados,5,4e3;

28
Curso Java SE - UTD 29

1.12.7. Exerccioresolvido
01Crieumprogramaemjavaquedecrementeumavarivel4vezesemostrecada
partedocalculo,sendoqueavarivelseiniciacomvaloriguala5.

1.12.8. Operadores relacionais:


Osoperadoresderelacionaisdecomparaosempreresultaemumvalorbooleano(true
oufalse).Essevalorbooleanousadocommaisfrequnciaemtesteif.Javapossuiquatro
operadores de comparao que podem ser usados para comparar qualquer valores
inteiros,numricosdepontosflutuantesoucaracteres.

1.12.9. Operadoreslgicos.
Expresses lgicassoaquelasquerealizamumaoperaolgica(ou,e,no,etc...)e
retornaverdadeirooufalso.Alinguagemjavaespecificamseisoperadoreslgicos(!,&,|,
^,&&,||).

29
Curso Java SE - UTD 30

1.12.10. Os operadores Bitwise:


Os operadores (^,&,|)sochamadosdeoperadoresde Bitwise.Essesoperadores
comparamduasvariveisbitporbit,eretornamumavarivelcujaosbitsforamdefinidos
combase em seasduasvariveis sendo comparadas tinhambitscorrespondentes. Eles
podemser:ambosligados(&),umoutroligado(|),ououexatamenteumligado(^).

1.12.11. Operadores lgicos de abreviao:

Ooperadordeabreviao(&&)consistenofatodeelenoperderseutempoavaliaes
inteis.Ooperadordeabreviao(&&)avaliaroladoesquerdodaoperao(operando
um) e se esse operando tiver um resultado false, ele no examinar o lado direito da
equao(operandodois),jqueooperadorsaberqueaexpressocompletanosertrue.
ANDabreviao(&&)
ORabreviao(||)
Exemplos:

30
Curso Java SE - UTD 31

1.12.12. Operadores lgicos ^ e !:


Ooperadorlgico^(ouexclusivo)avaliavaloresbooleanos.Ooperador^relacionase
comosoperadoresdenoabreviao,nosentidodequesempreavaliaambososvalores,o
do lado direito e o do lado esquerdo,em uma expresso. Para uma expresso OU
exclusivo(^)serverdadeira,exatamenteumoperandoprecisasertrue.Exemplo.
^ORexclusivo(xor)
!inversoboleana.
Exemplos:

Nota: A expresso acima avalia como false porque tanto o primeiro operando (2<3)
quantoosegundo(4>3)avaliamcomotrue.

Exemplos01:

Exemplos02:

1.12.13. Operadorescondicionais.
O operador condicional um operador ternrio tem trs valores usado para avaliar
expressesboleanasdemodosemelhanteainstruoIF,excetoporemvezdeexecutarum
bloco de cdigo se o resultado do teste for true,atribuir um valor varivel. Ou seja
objetivodooperadorcondicionaldecidirqualdosvaloresatribuiraumavarivel.Ele
constitudo dos smbolos ?(ponto de interrogao) e (dois pontos),os parnteses so
opcionais.Vejaasintaxe:
X=(expressoboleana)?valoraatribuirsetrue:valoratribuirsefalse
Exemplo01.

31
Curso Java SE - UTD 32

Exemplo02.

Exemplo03.

1.12.14. OperadorTernrio
Operador ternrio ou operador condicional tem objetivo de atribuir um valor a uma
variveldeacordocomoresultadodeumtestelgico.
Vejamosasintaxe:
Testelgico(?)valorseforverdadeiro(:)valorseforfalso.
Otestelgicoqualquerexpressoquepodeseravaliadocomoverdadeirooufalso
Exemplo01:

32
Curso Java SE - UTD 33

1.12.15. PrecednciadeOperadores
Aprecednciaserveparaindicaraordemnaqualocompiladorinterpretarosdiferentes
tipos
de operadores, para que ele sempre tenha como sada um resultado coerente e no
ambguo.
ordem operador

1 ()parnteses

2 ++psincrementoepsdecremento

3 ++princrementoeprdecremento

4 !negaolgica

5 *Multiplicaoe/diviso

6 %Restodadiviso

7 +somaesubtrao

8 <menorque,<=menorigual,>maiorque,>=maiorigual

9 ==iguale!=noigual

10 &ANDbinrio

11 |OUbinrio

12 ^OUexclusivobinrio

13 &&ANDlgico

14 ||OUlgico

15 ?:condicional

16 =atribuio

33
Curso Java SE - UTD 34

Capitulo2. Controledefluxoemjava.
Asestruturasdecontroledefinemasequnciadeexecuodasinstrues.Nopossvel
implementarumalgoritmoquenosejatrivialemumalinguagemdeprogramaoqueno
tenhaumconjuntomnimodeestruturasdecontrole.Asestruturasdecontrolepodemser
divididas em seleo, repetio e sequncia. A sequncia simplesmente definida pela
execuosequencialdoscomandos,decimaparabaixo.

2.1. Utilizarcdigoqueuseinstruesif

Aexpressoentreparntesesdevetercomoresultadoumvalorbooleanotrueoufalse.
Normalmente testar algo para saber se verdadeiro, seguida executar um bloco de
cdigo(umaoumaisinstrues)seoresultadoformesmoverdadeiroeopcionaloutro
blocodecdigosenofalse.Sintaxedadeclaraoif:

Fluxogramadadeclaraoif.

2.1.1. Expressesvlidasparainstruesif
Exemplos01:
Neste exemploambasas instruesso avaliadascomoverdadeiratanto ado lado
direitoquantoadoladoesquerdo,pois,ovalordavarivelxformaiordoqueovalorda
varively,entooblocodeinstruoexecutado,eamensagemserimprimidanasada
padro.

Exemplos02:

34
Curso Java SE - UTD 35

Neste outroexemploainstruoavaliadacomotrue,pois,ovalordavarivelteste
false,maisquandoofluxoentranoifavariveltesterecebetrue,logoblocodeinstruo
serexecutadoeresultandoimpressonasadapadro.

2.1.2.Expressesvlidasparainstruesifelse
A declarao ifelse usada quando queremos executar determinado conjunto de
instruesseacondioforverdadeiraeoutroconjuntoseacondioforfalsa.

Sintaxe da declarao if-else.

Fluxogramadadeclaraoifelse.

Notas:Nestesexemplosainstruodoladoesquerdoavaliadacomoverdadeira,pois,o
valordavarivelxnomaiordoqueovalordavarivelyeainstruodoladodireito
tambmavaliadacomoverdadeira,poisavariveltestetinhavalorinicialfalse,mas
dentrodainstruoatribudoumnovovalorigualatrue,logoblocodeinstruotanto
daesquerdacomoodadireitaseroexecutados,atribuindoumnovovalorparaavarively
iguala25imprimindoovalordeynasadapadro.
Exemplos01:

Notas:Nestesexemplosambasoscdigodoifseroavaliadacomoverdadeira,entoela
executaainstruoimprimindoteste1.Seasinstruoiffossefalsaeleexecutariamo
eles,imprimindoteste2,masnonossocasoforamverdadeiras.

35
Curso Java SE - UTD 36

Regraparaousodoelseedeelseif
Podeterumounenhumelseparaif,eeledevevirdepoisdequaisquerinstrueselseif.
Podeterdemuitosounenhumelseifparaumif,eelesdevemvirantesdoelse.
Depoisqueumelsetemsucesso,nenhumdosdemaiselseifouelsesertestado.

2.1.3.Expressesvlidasparainstruesifelseif.
A declarao else podeconteroutraestrutura ifelse.Estecascateamentodeestruturas
permiteterdeciseslgicasmuitomaiscomplexas.
Asintaxedadeclaraoifelseif:

Podemos ter vrias estruturas elseif depois de uma declarao if. A estrutura else
opcional e pode ser omitida. No exemplo mostrado acima, se a expresso_lgica1
verdadeira,oprogramaexecutaainstruo1esaltaasoutrasinstrues.Casocontrrio,se
aexpresso_lgica1falsa,ofluxodecontrolesegueparaaanlisedaexpresso_lgica2.
Se esta for verdadeira, o programa executa a instruo2 e salta a instruo3. Caso
contrrio,seaexpresso_lgica2falsa,entoainstruo3executada.

Fluxogramadainstruoifelseif

36
Curso Java SE - UTD 37

Exemplo01:

2.2. Expressesvlidasparainstruesswitchecase.
Sintaxedadeclaraoswitch.
Onde,varivel_inteiraumavarivel
detipobyte,short,charouint.valor1,
valor2,eassimpordiante,so valores
constantes que esta varivel pode
assumir.Quandoadeclaraoswitch
encontrada, o fluxo de controle avalia
inicialmente a varivel_inteira e segue
paraocasequepossuiovalorigualao
da varivel. O programa executa todas instrues a partir deste ponto, mesmo as do
prximocase,atencontrarumainstruobreak,queinterromperaexecuodoswitch.

Senenhum dos valorescaseforsatisfeito,oblocodefaultserexecutado.Este um


blocoopcional.Oblocodefaultnoobrigatrionadeclaraoswitch.

37
Curso Java SE - UTD 38

Fluxogramadadeclaraoswitch.
Exemplos01:

AsconstantesCASEsoavaliadasdecimaparabaixo,eaprimeiraconstanteCASEque
batercomaexpressoSWITCHseropontodeentradadaexecuo.

Exemplos02:

SoluoIncorreta.

SoluoCorreta.
Este exemplo perfeitamente vlido para a declarao switchcase, porque mesmo a
varivelsendodotipoString,pormquandoentrarnainstruoswitch,omtodoinvocado
pelavarivel s.length queretornarumvalorinteiro,ousejaotamanhodastring,queno
nossocasoiguala7.
Exemplo03:

38
Curso Java SE - UTD 39

No exemplo acima,quando fornecido argumento,a aplicao identifica se o primeiro


caractere deste umavogal.Seo argumento no for iniciado por umavogalocorre a
execuo da seo default da diretiva switch. Caso no exista argumentos fornecido o
programaimprimeumamensagemcorrespondente.
Regrasparausodainstruoswitchcase:
Cadainstruocasedeveserseguidadeumainstruobreak.
Certifiquesedequeumavarivelcharsejadeclaradaantesdainstruoswitch.

2.3. Loopseiteradores(usandoosloopsfor,whileedowhile).
Os comandos de repetio, ou de iterao, executam um comando ou um bloco de
comandosvriasvezes.umadasformasparaexecutarrepetidamenteumcomando.A
outraarecursoqueachamadadiretaouindiretadeummtododuranteaexecuo
doprpriomtodo.EmJavaexistemtrsformasdecomandosderepetio:owhile;o
dowhile;eofor.
Sintaxe:loopwhileFluxogramadoloopwhile

A declarao while executa repetidas vezes um bloco de instrues enquanto uma


determinadacondiolgicaforverdadeira.

39
Curso Java SE - UTD 40

Exemplo01:

Comoem todos osloopsaexpresso(teste)terqueresultaremumvalorbooleano.O


corpo de loop while s ser executado se a expresso(tambm conhecida como
condio)resultar em um valor true(verdadeiro). Uma vez que entramos no loop,seu
contedoserrepetidoatqueacondionopossamaisseratendidaesejaavaliada
comofalse(falsa),encerrandooloop.
Exemplo02:

Nesteexemploavarivelxinicializadacom0aoentrarnoloopacondioverificada
como sendo verdadeira,isso porque 0 menor do que 5,ento o bloco de cdigo
executado,imprimindonatelaastringxeovalordavarivelxquenocaso0,depoisa
execuodocdigopassaparaaprximalinhaqueoincrementodavarivelx,passando
avaler1.Agoraaexecuovoltaaoiniciodoloopparaverificarnovamenteacondioe

assimpordianteatqueacondiosejaavaliadacomofalsa.
Sintaxe:dowhile:fluxogramadoloopdowhile

2.3.1.Loopdowhile:
Adeclaraodowhilesimilaraowhile.Asinstruesdentrodolaodowhileseroexecutadas
pelomenosumavez.Inicialmente,asinstruesdentrodolaodowhilesoexecutadas.Ento,a
condiona expressolgica avaliada.Seforverdadeira,asinstruesdentrodolao dowhile
seroexecutadasnovamente.

40
Curso Java SE - UTD 41

Exemplo01:

Neste exemplo a varivel x inicializada com 0,o bloco de cdigo executado pelo
menosumavezantesqueacondiosejaverificada.Apsacondioseravaliadacomo
verdadeira,avarivelserincrementadaem1eaexecuodocdigovoltaparaoiniciodo
blocoeissoserepetiratqueacondiosejaavaliadacomofalsa.

2.3.2.Loopfor:
Adeclaraofor,comonasdeclaraesanteriores,permiteaexecuodomesmoblocodecdigo
umaquantidadedeterminadadevezes.
Sintaxe:doloopfor:

FluxogramaFor

Exemplo01:

Exemplo02:

41
Curso Java SE - UTD 42

2.4. Loopforaprimorado(paraarrays).

OcomandoFOREACHutilizadoquandovocquantasvezesprecisafazerainterao.
Elecompostoportrsexpresses,sendoelas:a)Declaraoeinicializao,b)Expresso
condicionalec)Expressodeinterao.
Exemplo01:

Exemplo02:

Nota: A sada dos exemplos anteriores, aps compilado e executado, dever ser uma
exibio dos nmeros inteiros do arranjo com nome semana. Esta estrutura otimiza a
interao no arranjo ou coleo passada para a expresso podendo ser efetuada a
navegao sem a necessidade de ndices ou interadores.

42
Curso Java SE - UTD 43

2.5. Usodebreak,continueereturn.

2.5.1.Break:
Ainstruobreakfarcomqueoprogramaencerreaexecuodoloopatualeinicieo
processamentonalinhadecdigoposterioraobloco.,issoporqueestecomandoservepara
interromperasequnciadeexecuodoscomandoesairdo comando switch.Isto no
aconteceapenasnocomandoswitch.Todavezqueumbreak encontrado,ofluxode
execuosaltaparaforadoblocoondeestcontidoobreak,sendoretomadonocomando
apsobloco.
adeclaraodedesviousadaparasairdeumlaoantesdonormal.Otipodetermina
para onde transferido o controle. O break transfere o controle para o final de uma
construodelao(for,do,whileouswitch).Olaovaiencerrarindependentementede
seuvalordecomparaoeadeclaraoapsolaoserexecutada.Exemplo:

Nota:Vamosanalisaresteexemploacimaquetemcomoresultadoaimpressodetodos
osnmeroscujaomdulodadivisopor10sejaiguala0.Daoresultadoomostrado
abaixo:
[i=100,i=90,i=80,i=70,i=60,i=50,i=40,i=30,i=20,i=10]
Exemplo02:
Agoravamosanalisaroexemplo02,quemostraomesmoprogramacomumapequena
diferenaqueainclusodocomandobreakdepoisdocomandoSystem.out.println();

Nota:Depoisdeanalisarmoschegamosaseguinteconcluso:Estecomandointerrompea
execuodoloopsatisfazendoacondionoblocoif.Entooresultadoaimpressode
apenasoprimeiroquesatisfazacondio,quenonossocasoo100.
[i=100]

43
Curso Java SE - UTD 44

2.5.2.Continue:
Ainstruocontinuefarcomquesomenteaiteraoatualdoloopsejaencerradaeque
aprximaiteraodomesmoloopsejainiciadadestequeforatendida.Quandousaruma
instruocontinueemumloopfor,vocterqueconsiderarseusefeitosnaiteraodo
loop.Adeclaraocontinuefazcomqueaexecuodoprogramavolteimediatamentepara
oinciodolao,pormparaaprximainterao.Ocontinuefazointerpretadorpularpara
aprximaiteraoeobrigaoatestaracondio.Exemplo:

Apergunta:Esseumloopinfinito?Arespostano.Quandoainstruocontinuefor
atingida,a expresso de iterao ainda ser executada! Ela ser exatamente como se a
iterao atual terminasse de maneira natural. Portanto,no exemplo anterior, ainda
aumentarovalorantesdacondio(i<10)serverificadanovamente.Masgeralmentea
instruocontinueusadadentrodeumtesteifcomosegueabaixo:

Nota: Este dois comando tambm podem ser usados como instrues rotuladas. As
instruesrotuladasestoalmdoescopodonossocurso,mas,emboramuitasinstrues
emjavapossamserrotuladas,maiscomumusarrtuloscominstrueslooptaiscomofor
ewhile,emconjuntocominstruesbreakecontinue.Umainstruodertulodeveser
colocada antes da instruo sendo rotulada,e consiste de um identificador vlido que
termina com dois pontos(:). As instrues rotuladas sero necessrias somente nas
situaesemquevoctiverumloopaninhadoeprecisaindicarqualquerencerraroua
partirdoqualdesejacontinuaraprximaiterao.

44
Curso Java SE - UTD 45

2.5.3.Return:
Adeclaraoreturn utilizadaparasairdeummtodo.Ofluxodecontroleretornapara
adeclaraoquesegueachamadadomtodooriginal.Adeclaraoderetornopossuidois
modos:oqueretornaumvaloreoquenoretornanada.
Exemplo:

Anotaes

45
Curso Java SE - UTD 46

Capitulo3. TiposdeVariveis,ConstanteseCasting.

3.1. Oqueumavarivel:

Varivel: um espao na memria usado para armazenar o


estadodeumobjeto.Umavariveldeveterumnomeeumtipo.O
tipodavarivelindicaotipodedadoqueelapodeconter.Onome
dasvariveisdeveseguirasmesmasregrasdenomenclaturaqueos
identificadores.

3.1.1.TiposdeVariveis:
Variveis de instncia: Estas variveis so noestticas, ou seja, declaradas sem o
modificador static. Variveis de instncia so assim chamadas porque seus valores so
nicos para cada instncia da classe. Assim, as variveis podem armazenar valores
diferentesparacadacpiadeobjetosdaclasse.
Variveis de classes: Estas variveis so declaradas com o modificador static. Isso
informaaocompiladorquehexatamenteumanicacpiadestavarivel,independente
donmerodeinstnciasdaclasse.
Variveis locais: So usadas para armazenar o estado temporrio de um mtodo.
Variveis locais so acessveis somente dentro do mtodo em que so declaradas, e
automaticamenteabandonadasnasadadomtodo.
Parmetros: Soosparmetrosdemtodos.Taisvariveissoacessveissomenteao
cdigonocorpodomtodo.

Nota: Veremosnosprximoscaptulosdetalheseexemplosdetodosostipos
devariveisaquimostrado.Geralmentequandofalamosde"camposemgeral"
(excluindo variveis locais e parmetros), podemos simplesmente dizer
"campos". Se a discusso se aplica a todas as variveis acima, usamos
"variveis". Se o contexto pede uma distino, usamos termos especficos
(campoesttico,varivellocal,etc)comoapropriado.Podemosaindausaro
termo"membro".Oscampos,mtodosetiposaninhadosdeumtipopodemser
chamadosdeseusmembros.

Exemplodevariveislocais:

Na linguagem de programao Java no permitido o uso de variveis indefinidas.

46
Curso Java SE - UTD 47

Variveisdefinidasdentro do mtodosochamadasdevariveislocais,temporriasou
estticasedevemserinicializadasantesdouso.Vejamosatabelaabaixocomosseguintes
valoresiniciais.
Exemplo02:
Atribuir um valor a uma varivel parece bem simples; simplesmente insira o valor
direitadosinal(=)paraatribulovarivelqueestaresquerda.Exemplos:

3.2. Variveisestticas:
ummembroquepertenceaclasse,umavarivelestticacompartilhadaportodasas
instnciasde classe, por queisto apenas uma cpia da varivel esttica mantida e
somenteaprpriaclassesuficienteparaacessaravarivelmarcadacomoesttica.
Exemplo01:

Exemplo02:

Exemplo03:
Neste exemplo vamos
mostrar atravs de um
programa como usar as
variveisestticas.

47
Curso Java SE - UTD 48

3.3. Constantes
Ovalordeumavarivelpodeseralteradoduranteaexecuodoprograma.Mas,ovalor
deumaconstantenoalteradojamais. Porpadro,recomendamosquecrieconstantes
sempre com letras maisculas por seguirem as normas da SUN, as constantes trazem
algumasvantagens,entreelasofatodequenomesdescritivosparaconstantespodemtornar
oprogramamaisfcildeserlido.
Sintaxe:
finalstatictipo_de_dadoIDENTIFICADOR=valor;
Exemplo01:

3.4. Converso ou Cast (explcita e implcita das variveis de tipos


primitivos).


Aconversopermitirquesejatransformadovaloresprimitivosdeumtipoemoutro.As
converses podem ser implcitas ou explcitas das variveis de tipos primitivos. Uma
conversoimplcitaocorrequandofazemosumatransformaoqueenvolveampliao.Em
outraspalavras,quandoinserimosumitemmenor(exemplo,umtipobyte)emumcontainer
maior(como um tipo int). A transformao valor maior em um container menor
conhecidacomocompactaoerequerumaconversoexplcita,emqueserinformadoao
compilador que conhece o perigo e aceita toda a responsabilidade. O Java converte
automaticamentevaloresdeumtiponumricoparaoutrotipomaior.Vejamosalgumas
conversesvlidasemjava.
Utilizamosocastingparaconverterumobjetoouumavariveldeumtipoprimitivopara

48
Curso Java SE - UTD 49

outradeumtipotambmprimitivo.Podemosconverterumdoubleemumint,ouuma
subclasseemumasuperclasse.
Aregrafundamentalparaocast:ocastingnomodificaoobjetoouvalorqueest
sendomoldado;porm,oreceptordocastconstituiumnovoobjetoouumnovotipo.O
castingdedadosprimitivosocorrecombastantefrequncia.Amaneirapeloqualocasting
age depende da preciso dos dados envolvidos. Por sua vez, a preciso depende da
quantidadedeinformaesqueumtipopodeconter;assim,umtipodepontoflutuante
doubletemmaiorprecisoqueumfloat,poisoprimeiroumtipode64bitseosegundo,
de32bits.
Umbytepodeserconvertidoemumshort,int,long,floatoudouble
Umshortpodeserconvertidoemumint,long,floatoudouble
Umcharpodeserconvertidoemumint,long,floatoudouble
Umintpodeserconvertidoemumlong,floatoudouble
Umlongpodeserconvertidoemumfloatoudouble
Umfloatpodeserconvertidoemumdouble
Semprequehouverumatransfernciadedadosdeumtipomenosprecisoparaummais
preciso,ocastingexplcitonoobrigatrio.

Regrasparacasting:
Jatransfernciadedadosdeumtipomaisprecisoparaummenosprecisorequerum
castingexplcito.Issoocorreporquepodehaverperdadedadosduranteamoldagem.Java
pretendealertaroprogramadordopossvelperigodeumaconversodessetipo:
Exemplo01:

Exemplo02:

49
Curso Java SE - UTD 50

Exemplo03:

Exemplo04:

Exemplo05:

OJavanofazautomaticamenteodowncast.

O casting entre objetos requer um pouco mais de cuidado. Veremos no decorrer da


apostilacomofazerocastingdeobjetos.

50
Curso Java SE - UTD 51

3.5. Atribuindoumavarivelderefernciaaoutra.

Asvariveisderefernciassousadasparasereferir(ouacessar)um
objeto.Umavarivelderefernciadeclaradacomosendodeumtipo
especfico,eessetiponopodenuncasermodificado.Umavarivelde
podeserusadaparareferirseaqualquerobjetodotipodeclarado,ou
de um subtipo do tipo declarado(um compatvel). Variveis de
refernciapodemserdeclaradascomovariveisestticas,variveisde
instncias,parmetrosdemtodosouvariveislocais.

3.5.1.Escopodevariveis.

Depoisquedeclaroueinicializouumavarivel,umaquestonaturalemuitoimportante
porquantotempoessavarivelvaiexistir?Essaumaperguntaqueserefereaoescopodas
variveisemjava.Oescopodefineondeumavarivelacessvelduranteaexecuodeum
programaequandoavarivelcriadaedestruda.Alocalizaodeumavariveldentrodo
programa estabelece seu escopo. Existem quatro categorias de escopo de variveis na
linguagemJava,soelas:

3.5.2.Variveisdeinstnciasdetiposprimitivos.

Asvariveisdeinstnciassodefinidasdentrodaclasse,masforadequalquermtodo,es
soinicializadasquandoaclasseinstanciada.Asvariveisdeinstnciassooscampoque
pertencemacadaobjetonico.
Exemplos:


Ou

51
Curso Java SE - UTD 52

Capitulo4. POOcomJava

4.1. Introduo
ProgramaoOrientadoaObjeto,constituiemumconjuntoderegrasdeprogramao.
Estudamosanteriormentecomoprogramardeformaestruturada,inicivamosaexecuo
docdigoefinalizandotodososprocessosnamesmaclasse.Pormsemsaberestvamos
usandoalgumasregrasdePOO(ProgramaoOrientadaaObjetos) comoporexemplo,
usando a classe System ou JOptionPane. Essas classes no foram criadas por ns,
porm elas foram reaproveitadas em nosso cdigo com objetivo de resolver os nossos
algoritmos.Vamosfazerumacomparaocomodiaadiaparaentendermosmelhor.
FabricadeComputadores. ServiodeDigitao.

RelatrioFinal.

Imaginequevoctrabalhacomdigitaode
textos. Voc no precisa saber como o
computador foi criado, nem como o
Software que usa para digitar o texto foi
desenvolvido. O seu objetivo usardesses
recursosecriarumnovoprodutofinal.Um
relatriodetexto.

AProgramaoorientadoaobjeto,umametodologiaqueosprogramadoresutilizam
comobjetivodeatingiralgunsrequisitosimportantesnaconstruodeumbomprograma
como:
Organizar o cdigo : Com o nosso cdigo dividido, podemos facilmente dar
manutenoouencontraralgumerromaisfacilidade.
Reutilizao do cdigo: No precismos reescrever todo o cdigo, quando
necessitamosdelenovamente.
Manter Padres : Utilizao de um mesmo padro conceitual durante todo o
processodecriaodocdigo.
At o final do curso iremos aprender e trabalhar nessa metodologia. Ento, bastante
atenonesseenosprximoscapitulos.

52
Curso Java SE - UTD 53

4.2. Classe,AtributoseMtodos.
ComoestamostrabalhndocomPOO(ProgramaoOrienntadaaObjeto),onossoobjetivo
finalconstruirumObjetoquetenhasuascaractersticas.UmObjetocriadoapartirde
umaClasse.ElairservircomomodeloparacriaodoObjeto.Vamosfazeruma
comparaocomodiaadiaparaentendermosmelhor.

Umprdionoconstruidodequalquerforma,opedreiroirconstruiroprdio
de acordo com as instrues da planta. Tamanho do banheiro, quantos quartos,
portadeentreda.Aplantadoprdio,seriaumaClasseeleservercomoreferencia
naconstruodoprdioqueumObjeto.

Iremosaprender,comocriaruma Classe,ouseja,referenciaparafuturosObjetos.
ImaginequequeremoscriarumPessoa.ParapodercriarumaPessoateremosantes
quefazer2perguntasbsicas.
Anotetudoqueumapessoapodeter,como nome,
datadenascimento,RG,CPF,etc..Paraarespostada
O que poderei ter? primeira pergunta, ns temos o que chamamos de
O que poderei fazer ? AtributosdaclassePessoa
AnoteTudoqueumapessoapodefazer,ouseja,suas
aes,comoacordar,dormir,falaroseunome,etc...
Para a resposta da segunda pergunta ns temos o
quechamamosdeMtodosdaclassePessoa

Com o conceito de Classe, atributos e


mtodos. Podemos agora criar uma classe
emcdigojava,vejanoprximotpicocomo
iremoscriarlo.

53
Curso Java SE - UTD 54

4.3. ConstruindoumaClasse.
Paracriarumaclasse,clicaremoscomobotodireitodomousenopacotedoProjeto>
novo>ClasseJava.

CLASSE

ATRIBUTOS

MTODOS

Agoraconstrumosanossaclasse,masoquesignificaestepublicantesdosatributose
mtodos e o que significa o void? Para entender melhor , temos que aprender sobre
Encapsulamento e tipoderetornodedados.Assuntoqueiremosvernoprximo
tpico.

4.4. Encapsulamento.
Encapsulamento umaformadeproteo do nossocdigo,existeminformaesque
queremosqueoutrasclassesvejam,outrasno.Imagineasuacontadeemail.Acontado
seuusuriopoderservistaporoutraspessoas,poiseleiridentificaroseuemailsdos
demais, porm asuasenha algo privado ondes voc poder teracesso a ela. Da
mesmaformaquequeremosmostrarouprotegerosnossosdados,umaclassetambmtem
asmesmasnecessidadesepodemosdefinilasatravsdoencapsulamento.
publicoupublico,qualquerclassepodeteracesso)
private ou privado, apenas os mtodos da prpria classe pode manipular o
atributo)
protectedouprotegido,podeseracessadoapenaspelaprpriaclasseoupelassuas
subclasses).
Assimpodemosalteraropublicdanossaclasseporoutrovalordeencapsulamento,
dependendodanecessidadedeproteodosnossosatributosoumtodos.Porboasprticas
deprogramao,osatributosdanossaclassePessoaestercomoprivate.
FaaalteraodeencapsulamentonaclassePessoa.

54
Curso Java SE - UTD 55

4.5. Retorno
Osmtodospodemrealizarumaaointernaepodeminfluenciaremoutrosmtodos
atravsdoseuRetorno.Elepoderepresentarostiposprimitivosdedadosqueconhecemos
como : int, string, double,float, chat,boolean porexemplo,oupoderetornarvazio,
simbolizadoporvoid.Osmtodosquetiverretorno,deverterdentrodoseucorpoum
returnqueirrepresentaroresultadofinaldaminhaoperao.
Vejaoexemploabaixo:

NesteexemploalteramosomtodofalarNomedaclassepessoa.Otipoderetornodesse
mtodoString.Entoalmdaclasseimprimirafrase,eledeverguardaraStringem
umavarivelchamadaminhaFraseeretornarelaparaserusadaemoutrasclassesna
linha23.

4.6. Construtores,mtodosseteresegeteres.

4.6.1.Construtores
So mtodos especiais, que so acionados no momento da construo da classe, ela
deverteromesmonomedaClassecriada.Imaginequeparaqueumapessoapossaexistir,
elepreciseinicialmentedeumnomeedatadenascimento.Entopodemosconstruiro
nossoconstruitordaseguinteforma:

Nessecdigoonossoconstrutorresponsvelporalimentarosatributosnomeedatade
nascimentodapessoa.tambmgarantimosqueaomomentodaconstruodoobjeto,uma
Pessoanopoderexistirsenotiverumnomeeumadatadenascimento.
MascomoeupodereialteraromeuCPF,RG,ecomopodereimostraressesvaloresde
atributos?Assuntoqueveremosnoprximotpico.

4.6.2.Mtodosseteresegeteres
Osmtodosnomeadoscomosetegetsoresponsveisrespectivamenteporalterar
umatributoemostrarumatributodaminhaclasse.Paraqueonetbeanspossageraresse
cdigo, iremos digitar : ALT+ INSERT > INSERIR CDIGO e marcar os atributos,
nome,cpf,rg.
Como eu poderei usar o meu construtor, meus mtodos do tipo set e get ? Este
assuntoveremosnoprximotpico.

55
Curso Java SE - UTD 56

4.7. Estanciando(ConstruindoumObjeto)
Agoraestamosprontosparaconstruironossoobjetousandoanossaclasse Pessoa
como referencia. Ento, iremos voltar a classe que tenha o mtodo main e realizar a
seguinteoperao:

Agora estou estanciando o meu objeto e de acordo com meu construtor, eu preciso
obrigatoriamentedeumnome=Fabrcioeumadatadenascimento=17/02/87todos
elesdotipoString.Vamosagorausarosmtodosdanossaclassecriada.

Dessa forma podemos modificar e acessar qualquer varivel dependendo das nossas
necessidades. TodasasinformaesdoFabrcioestodentrodeumavariveldotipo
Pessoachamadadex.Seeuquisercriarumanovapessoa,possochamladequalquer
outrovalor.

4.8. VariveisEstticas
Variveisestticassovaloresqueseforalteradoemumobjetodeumadeterminada
classetodososobjetosdaestanciadosdamesmaclasse,automaticamenteteromesmo
valorElenormalmenteusadoquandotodasasclassestemalgoemcomum.Imaginea
seguintesituao.
AClassePessoaterumatributochamado:ondeVivo=PlanetaTerra

Todas as pessoas moram em um planeta que


conhecemosporPlanetaTerra.Pormpesquisas
mais recentes mostram que o nome do nosso
planeta deveria serchamado de Planeta gua
poisneleencontrasemaisguadoqueaterra.
Setivermos300objetosestanciadosdotipopessoa,comoalterarondeVivo=Planeta
guaemtodososobjetosemumanicainstruosemprecisarpercorrertodoseles?
BastacriarumavarivelestticanoatributoondeVivo,assimsealteramosem1dos
objetosessavarivel,todaselassofreroamesmaalterao.Vejacomocrilo:

56
Curso Java SE - UTD 57

//AtributoestticocriadonaclassePessoa
privatestaticStringondeVivo="PlanetaTerra";

//Mtodosetparaalteraravarivelesttica
publicvoidsetOndeVivo(StringondeVivo){
Pessoa.ondeVivo=ondeVivo;
}
//Mtodogetparaavarivelesttica
publicStringgetOndeVivo(){
returnPessoa.ondeVivo;
}

Conclumosentoqueasvariveisestticasnopertencemespecificamenteanenhuma
instanciadeobjetoesimumareferenciadaclasse.Oqueexplicaasubstituiodo
termothisparaonomedaclassequequecontmavarivelesttica,noexemplo
acimaalteramosotermothisnomtodosetOndeVivopelonomedaclasseque
contmavarivelesttica(Pessoa).

4.9. MtodosEstticos
OMtodosEstticossecaracterizamporserumreferenciademtododaClasse,sema
necessidadedeinstanciarmosumobjetoparautilizlo.Sequisermosporexemploaletarou
mostrarohabitatdaspessoassemprecisarconstruirumobjetopodemosrealizaressaao
apenasadicionandoapalavrareservadastaticnosmtodos,dessaforma.

//AtributoestticocriadonaclassePessoa
privatestaticStringondeVivo="PlanetaTerra";

//MtodoESTTICOsetparaalteraravarivelesttica
publicstaticvoidsetOndeVivo(StringondeVivo){
Pessoa.ondeVivo=ondeVivo;
}
//MtodoESTTICOgetparaavarivelesttica
publicstaticStringgetOndeVivo(){
returnondeVivo;
}

Obs.:Mtodosestticoaceitamapenasvariveisestticas.

Paraquepossamosutilizarosmtodosestticosprecisamosinserironomedaclassecom
omtodoestticocriado.

57
Curso Java SE - UTD 58

Capitulo5. HeranaeInterface.

5.1. Introduo
Estudamosanteriormentecomoestruturarasnossasclasses,agoraprecisamosgeraruma
interao entre classe criadas. Para isso no conceito de POO tambm temos que saber
Interface e herana. Iremos aprender casa uma delas, seu conceito e como
implementlas.

5.2. Herana

fundamentalparaJavaeoutraslinguagensdeprogramaoorientadasaobjetos,o
conceitodeherana,quepermiteaocdigodefinidoemumaclasseserreutilizadoem
outrasclasses.
Sintaxedeheranaemjava:

classNomeDaClasseASerCriadaextendsNomeDaClasseASerHerdada

EmJava,podeserdefinidoumasuperclassegeral(maisabstrata),edepoisestendlacom
subclassesmaisespecficas.Asuperclassenosabenadasobreasclassesqueherdamdela,mas
todasassubclassesprecisamdeclararexplicitamentearelaodeherana.Umasuperclasserecebe
automaticamenteasvariveisdeinstnciasacessveiseosmtodosdefinidospelasuperclasse,mas
tambmlivreparasubstituirmtodosdasuperclasseparadefinircomportamentomaisespecficos.
Osobjetosdeumamesmaclassepodemtirarproveitoderelaesdeherana,ondeobjetos
recmcriadosabsorvemcaractersticasdeoutrosjexistenteseadicionamsenovascaractersticas.

58
Curso Java SE - UTD 59

5.3. Object: A superclasse csmica do java


AclassObject:AclasseObjectoltimoancestraltodaclasseemjavaestendede
Object.Entretanto,nuncaserprecisogerarsuaheranadiretamente:

AsuperclasseterminalObjectautomaticamenteinclusasenenhumasuperclassefor
mencionadaexplicitamente.PelofatodetodasasclassesemjavaestenderemObject,
importantefamiliarizarsecomosserviosfornecidospelaclasseObject.Remeteremosao
leitorapesquisarememartigosnainternetouatmesmoveradocumentaoonlineque
listaosvriosmtodosdaclasseObject,masquesaparecemquandolidamoscom
threads(linhasdeexecuo).VocpodeusarvariveisdotipoObjectparareferirsea
objetosdequalquertipo:

claroqueumavariveldotipoObjectsomentesertilcomoummarcadorgenrico
paravaloresarbitrrios.Parafazerqualquercoisaespecficacomovalor,vocprecisater
algumconhecimentosobreotipooriginale,ento,aplicarumaconverso:Emjava,somente
ostiposprimitivos(nmeros,caracteresevaloreslgicos)nosoobjetos.Todosostiposde
arrays,independentementedeseremarraysdeobjetosouarraysdetiposprimitivos,so
tiposdeclassesqueestendemaclasseObject.

Super: Apalavrasuperseguidaimediatamentedeparnteseschamaoconstrutorda
superclassedemesmaassinatura,deveseraprimeirainstruodentrodeumconstrutorda
subclasse.

Superclasse:umaclassedaqualseherdaoutrasclasses.Aclusulaopcionalestendeemuma
declaraodeclasseespecificaasuperclassediretamentedaclasseatual.Umaclasseditoseruma
subclassediretadaclasse,queseestende.Asuperclassediretaaclasseapartirdecujaaplicaoa
implementaodaclasseatualderivado.Aclusulaextendsnodeveaparecernadefinioda
classejava.lang.Object,poisprimordialaclasseenotemnenhumasuperclassedireta.Sea
declaraodeclasseparaqualqueroutraclassenotemnenhumaclusulaextends,entoaclasse
temaclassejava.lang.Objectcomoimplcitasuperclassedireta.

Subclasses:umaclassequeherdadeumaclasseoudeumainterface.Umasubclasseherda
estadoecomportamentodetodososseusantepassados.Asuperclasseotermorefereseancestral
diretodeumaclasse,assimcomotodasassuasclassesascendentes.Essahierarquiadeclasses
segueumaapresentaonaformadervore,emquearaizasuperclassedetodoo
sistema.Cadanvelabaixodessasuperclassedosistemaacrescentafunesespecficas.

59
Curso Java SE - UTD 60

Exemplo01:Nesteexemplovamosmostrarcomoprocedercomessepoderosorecursodo
javaquechamamosdeheranasimples.
CdigodasuperclasseConta.

CdigodasubclasseCPoupancaqueestendedasuperclasseConta.

60
Curso Java SE - UTD 61

CdigodasubclasseCEspecialqueestendedasuperclasseConta.

Diagramadeclassesrepresentandoaheranaentreasclassescitadasacima.

Nota:Javapermitequeumaclasseherdeapenasascaractersticasdeumanicaclasse,
ouseja,nopodehaverheranasmltiplas.Porm,permitidoheranasemcadeias,por
exemplo:seaclasseMamferoherdaaclasseAnimal,quandofizermosaclasseCachorro
herdaraclasseMamfero,aclasseCachorrotambmherdarascaractersticasdaclasse
Animal.

Comoestamostratandodeheranadeclasses,
todaclassetemseumtodoconstrutor.Portanto,
seestamostrabalhandocomduasclasses,temos
doismtodosconstrutores.Paraacessarmoso
mtodoconstrutordaclassequeestsendo
herdadausamososuper().

61
Curso Java SE - UTD 62

Exemplo02:
Parademonstrarcomodefinirorelacionamentodeherana,consideraseocontextode
terquedesenvolverumprogramaquesimuleocomportamentodevriostiposdeanimais
comomostradonafiguraaoladoemumdeterminadoambiente.
Inicialmente,apenasumgrupode
animaisestarpresentenesteambiente
ecadaanimaldeveserrepresentado
porumobjeto.Almdisso,osanimais
movemsenoambienteaoseumodoe
podemfazerumconjuntodecoisas.O
programadeverpreverquenovostipos
deanimaispoderoserincludosno
ambiente.

Oprimeiropassoobservarcadaanimaledefiniroquecadaobjetodotipoanimaltem
emcomumnoquedizrespeitoaosatributosecomportamentos(mtodos).Devesedefinir
tambmcomoostiposdeanimaisserelacionam.Inicialmente,oprogramadevesimularo
comportamentodosanimaisilustradosnafigura,ouseja,deumleo,deumlobo,deum
gato,deumhipoptamo,deumtigreedeumcachorro.

Osegundopassoconsisteemprojetarasuperclasse,ouseja,aclassequerepresentaoestadoeo
comportamentoemcomumatodososanimais.Paraesteexemplo,comotodososobjetosso
animais,asuperclassefoidenominadacomoAnimaleasvariveisemtodosemcomunsatodosos
animaisforamatribudosaela,comoilustradonaFigura.Nesteexemplo,cincovariveisforam
definidas:(otipodecomidaqueoanimalcome),(onveldefomedoanimal),(representaoda
alturaelarguradoespaoqueoanimalvagaraoseuredor)e(ascoordenadasXeYdoanimalno
espao).Almdisso,quatromtodosforamdefinidosparadefinirocomportamentodosanimais:
(comportamentodoanimalaofazeralgumrudo),(comportamento57doanimalaocomer),
(comportamentodoanimaldormindo)e(comportamentodoanimalquandonoestnem
dormindonemcomendo,provavelmentevagueandonoambiente).

Oterceiropassoodedecidirsealgumasubclasseprecisadecomportamentos
(mtodos)especficosaoseutipodesubclasse.AnalisandoaclasseAnimal,podeseextrair
queosmtodosdevemterimplementaesdiferentesemcadaclassedeanimais,afinal,
cadatipodeanimaltemcomportamentodistintoaocomerefazerrudos.Assim,esses
mtodosdasuperclassedevemsersobrescritosnassubclasses,ouseja,redefinidos.Os
mtodosnoforamescolhidosparaseremredefinidosporacharqueessescomportamentos
podemsergeneralizadosatodosostiposdeanimais.

62
Curso Java SE - UTD 63

5.3.1.Construtoresdasubclasse

Osconstrutoresdasuperclassenosoherdadospelasubclasse,logo,estadeverterseus
prpriosconstrutoresparainicializarseusatributos.Todavia,aoinstanciarumobjetoda
subclasse,devemosinicializaraquelesatributosqueelaestherdando,eofazemos
chamandoalgumconstrutordasuperclasse,usandoachamadasuper(...).

5.3.2.ClasseAbstrata
Para entender o conceito de herana, precisamos primeiro entender No Portugus, a
palavraAbstratarefereseaalgoquenoexistefisicamente,entoseconvertermosessa
expressoemJavapodemosdizerqueClasseAbstrataumaclassequenopodeserum
Objeto. Assimelaprecisarserherdadaouimplementada,noprximotpicoiremosver
comofuncionaemumexemplodecdigo.
ImaginequevoctenhaumaclasseCarrosquetenhamtodosgenricoscomunsatodos
osveculos.Masvocnoquerquealgumdefatocrieumobjetocarrogenrico,abstrato.
Como se inicializaria o seu estado? De que cor ele seria?Quantos assentos? ou, mais
importante,dequeformaelesecomportaria?Emoutraspalavra,comoosmtodosseriam
implementados?TemoscertezadequeodonodeumaBMWlhediriaqueocarrodele
capazdefazercoisasqueoGOLapenassonhaemfazer.
Aimplementaopodeserdessaformamostradaacima,comotambmpodesercomo
seguenoexemploabaixo:

63
Curso Java SE - UTD 64

DessaformapodemosdizerqueMeuCarroquepoderserumObjeto,herdadeCarro
queumaclasseabstrata.

NaClassequecontmomtodoMain,nstemos:

64
Curso Java SE - UTD 65

5.4. Interface
Interfaceumaespciedesuperclasse100%abstrataquedefineosmtodosqueuma
subclassedevesuportar,masnocomoessesuportedeveserimplementado.Issoporqueao
criar uma interface,estar definindo um contrato com o que a classe pode fazer,sem
mencionarnadasobrecomoofar.Umainterfaceumcontrato.Qualquertipodeclasse
(concreta)edequalquerrvoredeheranapodeimplementarumainterface.

Exemplo01:

Exemplo02:

Exemplo 03:

Regrasparaasinterfaces:
UmainterfaceemJavaumacoleodemtodosabstratosquepodeserimplementadapor
umaclasse.
Umainterfacenapodeimplementaroutrainterfaceouclasse.
Ostiposdeinterfacepodemserusadospolimorficamente.
Osmtodosdeuminterfacenodevemserestticos.
Umainterfacedeveserdeclaradacomapalavrachaveinterface.
Todososmtodosdeumainterfacesoimplicitamentepubliceabstract.Asinterfacess
podemserdeclaradas.Umainterfacepodeestenderumaoumaisinterfacesdiferentes.
Todasasvariveisdefinidasemumainterfacedevemserpublic,staticefinal.Asinterfaces
spodemserdeclararconstantesenovariveisdeinstncia.

65
Curso Java SE - UTD 66

Capitulo6. Herana(Polimorfismo)

6.1. Introduo
Neste capitulo veremos como funciona a interao com classes em Polimorfismo.
Usamosesserecursoquandoqueremosquemodificarmtodosherdadosparaissotemos
queaprenderoconceitoeprticadesobrecargaesobrescrita.Veremosestesassuntosno
prximotpico.

6.2. Sobrecarga.
Usamos sobrecarregar de mtodos quando temos um determinado mtodo com o
mesmo nome, porm com assinaturas diferentes, sou seja, parmetros diferentes, dessa
forma quando usamosum determinado mtodo comsobrecarga podemosescolherqual
mtodo sobrecarregado ser usado de acordo com o nmero e tipo de dados do
parmetrosoferecidos.Vejaumexemploabaixo:

NaClasseanimalcriamos2mtodochamadocomer,omtodoquenocontmnenhum
parmetro,oanimalapenasmostraaaodecomer, estadodacarne.Onossosegundo
mtodo, tambm chamase comer, porm ele tem um assinatura diferente, ele recebe
comoparmetroumvalorboleanoquerefereseaoestadodacarne,dessaformaoanimal
podesimplesmentecomerouverificarotipodealimentoantesdesealimentar.

6.3. SobreEscrita
Usamos sobrescritademtodos quandotemosquemodificarummtodoherdadoda
classepai,parasobrescreverosmtodosteremosquecriaromesmomtodoherdadona
classefilhacomonomeassinaturasigual.LevandoemconsideraoaclasseAnimalcriada
notpicoanterior,vejanoexemploabaixo:

No exemplo anterior, o cachorro j herda o mtodo comer, porm o animal come

66
Curso Java SE - UTD 67

qualqueralimento,estenossocachorronocomerqualqueralimento,elescomerao.O
termo@Overridenoexemplo,noobrigatrio,apenasparaavisaraIDEqueesteum
mtododesobrescrita.

6.4. Polimorfismo
Podemosdizerquepolimorfismoquantotemosmtodosdesobrescritasdistintosentre
classesfilhasquereferenciaummesmoPai.Vejaoexemploabaixo.

Professor

Noteasroupasqueelesusam.Apessoaporpadro,temumestiloderoupa,porm
dependendo da situao, temos que usar roupas especficas para cada situao. Um
professor tambm uma pessoa, porm do tipo Professor e ele precisa de um tipo
especfico deuniformepara darsuasaulas.O aluno tambm uma Pessoa,porm ele
precisa de um fardamento adequado para assistir as aulas. Assim ns temos a classe
Professor e Aluno herdando de Pessoa Porm cada uma delas tem mtodos
diferentesquandonosreferimoscomo elesse vestem.Vamosvercomoficariaemcdigo
javaonossoPolimorfismo.

67
Curso Java SE - UTD 68

Classe Filha de "Pessoa" que sobrescreve mtodo vestirRoupa

Classe Filha de "Pessoa" que sobrescreve mtodo vestirRoupa

Anotaes:

68
Curso Java SE - UTD 69

Capitulo7. TratamentodeExcees

7.1. Capturandoumaexceousandoobloco(tryecatch).
A linguagem java fornece aos desenvolvedores um mecanismo
sofisticadoparamanipulaodeerrosqueproduzcdigosdemanipulao
eficienteseorganizados:amanipulaodeexcees.Amanipulaode
exceespermitequeosdesenvolvedoresdetectemerrosfacilmentesem
escrever um cdigo especial para testar valores retornados. Permite
tambm manter o cdigo de manipulao de excees nitidamente
separado do cdigo que gerar a exceo. Alm disso,permite que o
mesmocdigodemanipulaodeexceeslidecomasdiferentesexceespossveis.
A classe Throwable a nica classe cujas instncias diretas ou indiretas podem ser
usadas para serem lanadas. A classe Throwable prdefinida na linguagem Java,
juntamentecomvriasoutrasclassesdefinindoumgrandenmerodecategoriasdeerro.
OsprogramadoresJava,porconveno,casoqueiramcriarnovasexceesdevemestender
aclasse Exception queumasubclassedeThrowable.Duasclassesdescendentesdaclasse
Throwablepodemserconsideradasespeciais:aclasse ErroreaclasseRuntimeException.A
linguagem java no obriga o programador a tratar os lanamentos de exceo
envolvendo instncias da classe Error, da classe RuntimeException e das classes delas
derivadas,todososoutroslanamentosdeexceodevemsertratadospeloprogramador.
Capturandoumaexceocomoblocotryecatch.
Vejamosasintaxe.

Otermoexceessignificacondioexcepcional,eumaocorrnciaquealteraofluxo
normal do programa. Vrias coisas podem levar a excees,incluindo falhas do
hardware,exaustoderecursoeosfamososerros.Quandoissoacontece,ousejaquando
ocorre um evento excepcional ocorre em Java,diz se que uma exceo ser lanada.
Exemplo01:

69
Curso Java SE - UTD 70

Nota:Omtodocalcseforchamadocomyigualzero(0),gerarumerroeumaexceo
ser lanada, esse erro poder ser sinalizado no bloco trycatch,ento a execuo do
mtodopularparaablocodecdigocatch,ondesermostradoumamensagemdeerro.
Exemplo02:
Caso01:NesteexemplovamoschamaromtodoconverteStr(),passandouma string
numrica,quenonossocaso8eoresultadoaconversodastringemumnmerode
ponto flutuante,da a diviso feita e a execuo do programa acontece sem nenhum

problema.

Caso02: Neste mesmoexemplovamoschamaragoraomtodoconverteStr(),passando


umastringnonumrica,quenonossocasoacaractere'n'eoresultadoolanamento
de uma exceo,jogando o fluxo de execuo do programa para o bloco catch,onde
imprimeumamensagemnanoconsole.

7.1.1.Finally
Finally:otrechodecdigofinal.Afunobsicadefinallysempreexecutarseu
blocodedadosmesmoqueumaexceosejalanada.muitotilparaliberarrecursosdo
sistemaquandoutilizamos,porexemplo,conexesdebancodedadoseaberturadebuffer
paraleituraouescritadearquivos.

70
Curso Java SE - UTD 71

Resultadodocdigoacima:

7.1.2.Lanadoumaexceocomothrows.

O objeto de exceo uma instncia da classe Exception ou de uma de uma de suas


subclasses. A clusula catch usa,como parmetro,uma instncia de objeto de uma tipo
derivadodaclasseException.Alinguagemjavaexigequetodomtodocaptureaexceo
verificadaquepodeviralanarouentodeclarequelanaraexceo.Adeclaraoda
exceo faz parte da interface pblica do mtodo. Na declarao de uma exceo que
poderserlanada,apalavrachavethrowsusadaemumadefiniodomtodo,juntocom
umalistadetodasasexceesverificadasquepoderoserlanadas.
Exemplo01:

Exemplo02:

7.1.3.Criandoumaexceocomthrow.
AmquinaVirtualJavalanarefernciasparainstnciasdemaneiraimplcitautilizando
asclassesprdefinidas.Oprogramadorpodeutilizarocomandothrowdeformaexplcita.
Quandoofluxodecontrole
atinge o comando throw
<expresso>, a expresso
avaliada. Esta expresso
corresponde, em geral
criao de um objeto e
resulta numa referncia, p.
ex. throw new ErroDoTipoX();.
A partir da o fluxo de
controleser desviadopara

71
Curso Java SE - UTD 72

umaclusulacatchapropriadadealgumcomandotrycatch.
Ofluxodecontrolesegueacadeiadinmicadosregistrosdeativaodasinvocaesdos
mtodos,ousejaaexecuodeummtodopodeterminar(i)porqueofluxodecontrole
atingiuofinaldomtodo(returnimplcito,somentenocasodemtodosdotipovoid!),(ii)
porqueofluxodecontroleatingiuumcomandoreturn,ou(iii)porquefoiexecutadoum
throw implcito ou explcito que no foi apanhado por um comando trycatch daquele
mtodo.Aprocuraporumtrycatchapropriadopropagadaatopontoemquehum
retorno para o mtodo main, neste caso a execuo do programa ser finalizada, com
mensagemdeerroprovidapelaMVJdizendoqueumaexceofoilanadasemquefosse
apanhada.Edeversermostradoalgocomo:

Exemplosdeexceesjdefinidasnopacotejava.lang:
ArithmeticException: indicasituaesdeerrosemprocessamentoaritmtico,talcomo
uma diviso inteira por 0.A diviso deum valor real por0 no gerauma exceo (o
resultadoovalorinfinito).
NumberFormatException: indica que tentouse a converso de uma string para um
formatonumrico,masseucontedonorepresentavaadequadamenteumnmeropara
aqueleformato.umasubclassedeIllegalArgumentException;
IndexOutOfBounds:indicaatentativadeacessoaumelementodeumagregadoaqum
ou alm doslimitesvlidos. a superclasse de ArrayIndexOutOfBoundsException, para
arranjos,edeStringIndexOutOfBounds,parastrings.
NullPointerException: indicaqueaaplicaotentouusarumarefernciaaumobjeto
quenofoiaindadefinida.

ClassNotFoundException: indicaqueamquinavirtualJavatentoucarregaruma
classemasnofoipossvelencontrladuranteaexecuodaaplicao.

72
Curso Java SE - UTD 73

Capitulo8. UML

8.1. Introduo
Neste captulo iremos aprender como, instalar e criar uma diagramao de classes
usandooNetbeansparaalinguagemJava.UMLsignifica:UnifiedModelingLanguage,
ou seja Linguagem de Modelagem unificada. Modelar nossa cdigo com objetivo de
documentarevisualizarmelhoroprojeto.
Pararealizarainstalaosimples,bastairem Ferramentas>Plugins ebuscarpor
UML.Estepluginestdisponvellivrementeapartirdaverso6.7.
Antesdecomearmosatrabalharcomeles,precisamsaberquaisistiposdediagramas
podemosdesenvolverequalautilidadedecadaumadentrodeumProjetodequalquer
escala.TiposdeDiagramas.

8.1.1.DiagramadeAtividade:
Umdiagramadeestadoespecial,ondeamaioriadosestadosestadodeao,ea
maioriadastransiesativadaporconclusodasaesnosestadosdeorigem.
Oobjetivoestudarosfluxosdirigidosporprocessamentointerno,descrevendoas
atividadesdesempenhadasemumaoperao.

8.1.2.DiagramadeSequencia
Apresentaainteraodetempodosobjetosqueparticipamnainterao.
O diagrama de sequncia mostra a colaborao dinmica entre um nmero de
objetos,evisamostrarasequnciademensagensenviadasentreobjetos.

8.1.3.DiagramadeCasodeUso
Casosdeusodescrevemfuncionalidadesdosistemapercebidasporatoresexternos.
Umatorumapessoa(oudispositivo,ououtrosistema)queinteragecomosistema.

8.1.4.DiagramadeClasse
Denotaaestruturaestticadeumsistema.Asclassesrepresentamcoisasqueso
manipuladas por um sistema. Esse diagrama considerado esttico porque a
estruturadeclassesvlidaemqualquerpontodociclodevidadosistema.
NesteCursoaprenderemoscomotrabalharcomDiagramadeClasse,poisessediagrama
bemprximodacriaoeestruturaodeclasseseheranaentreasclassescriadas.

73
Curso Java SE - UTD 74

8.2. AbrindooProjeto
CriandoumNovoProjetodeDiagrama

NomeandoProjetodeDiagrama

EscolhendoDiagramadeClasse

74
Curso Java SE - UTD 75

EntrandonoDiagramacriado,podemosvisualizarnoLadodireitodaIDENetbeans,um
boto chamado Paleta ele ser responsvel abrir uma aba onde podemos montar os
pacotesdeclasse.Vejaainterfacedaaplicao:

NadireitaClicandoem Class, cliquenopalcoprincipalquesergeradoumanova


classe indefinida. Para alterar a Classe, basta clicar em Create Atributes para criar os
atributos, e CreateOperation para criarosmtodos,lembreseque parao diagrama,
primeirovemonomedavariveloumtodo,emseguidavemoseutipo:
Exemplo:nome:String

Vejacomocriarumaclassesimplescomotipo,pessoa:

Dessaformapodemoscriarqualquerclassecomosseusatributosemtodosdeformaa
podervisualizarmelhoraestruturadoprojeto.
ParacriarinterfaceouHerana,bastaclicarmosemumaclasseaoqualvocquermontar
umarelaoeapareceroseguintemenuaolado:

Implementationpodemoscriarumaimplementao,ouseja
umainterface.

DependencyUmaformadegerarheranaentreClasseemJava

75
Curso Java SE - UTD 76

Capitulo9. FilaePilha
IremosestudarAlgunsestilosdeagrupamentoeorganizaodedados,ondepodemos
listar,retiraroucolocarelementosdessegrupodedadosdeformaorganizada,levandoem
consideraoasuaposionogrupo,paraissopodemosestudarconceitosdeFilaePilha
paraessasaplicaes,veremosnosprximostpicoscomotrabalharcomcadaumadelas.

9.1. Fila
ImaginequevoctemumaFiladeatendimentoemumBanco.
OquepodemosobservaremumaFila?

A fila poder est vazia, onde o


caixanoirterquetrabalhar.

Afilapoderestcheia,ondeno
poderentrarningummaisnafila
at que pelo menos saia uma
pessoadela.

Quandoalgumnovochega,elevaiparaofinaldafila.
Apessoaqueatendida,sempreoprimeiroemumafilaelogodepoisdeser
atendido, ele sai da fila, dando lugar a outras pessoas alterando a ordem de
chamadadetodomundo.Quemeraoterceiro,passaaserosegundo,quemerao
segundopassaaserprimeironafila.
Tudo o que acontece em uma fila normal tambm pode ser implementado na
ProgramaoJava.

9.1.1.ImplementandoFilaemJava
ParaquepossamosimplementarumafilaemJavatemosqueusarosmtodosda
interfaceQueuedaclasseLinkedListDessaforma:

Queuefila=newLinkedList();

OObjetofilaserresponsvelporcontermtodoaoqualpoderemosincluir,retirar,e
mostraroprximoelementodafila,vejanatabelaabaixoosseusmtodosesuasfunes:
Mtodo Funo
element(Object); Mostraoprimeiroelementodafilasemremovlo
offer(); Insereumnovoelementodafila
poll(); Retornaeretiraoprximoelementodafila.Retornanullseafila
estivervazia

76
Curso Java SE - UTD 77

Vejaaimplementaoabaixo:

Oselementosnesseexemploestoinseridosnaseguinteordem
5 6 1 7 3

Retirandoos3primeiroselementosdaFilacomomtodoPoll,temos:

7 3

Inserindo o Elemento 10 e 1 na Fila usando o mtodo offer , temos:

7 3 10 1

Sendo assim, se usarmos o mtodo Poll mais 5 vezes, estes elementos seriam retornados e
retirados da fila nessa ordem mantendo a fila vazia. Quando a Fila estiver vazia, o comando Poll
passar a retornar null.

Vrios sistemas usam esse recurso, como sistema de atendimento ao cliente, um sistema de fila de
impressora onde os primeiros documentos a serem impresso tero prioridade em relao aos outros
documento que sero impresso em seguida. Pesquise por mais implementaes usando o recurso de
Fila.

77
Curso Java SE - UTD 78

9.2. Pilha
ImagineumaPilhadePratosaserlavadosoquepodemosobservar?
A pilha poder est vazia, onde no precisamos
lavarnenhumprato
Apilhapoderestcheia,ondenopoderentrar
nenhumpratoamais,atserlavadoalgum
Opratoquequechegarnapilhaestarlogoacima
dosdemais.
Opratoaserlavadojustamentoodecimaouseja,oultimopratodapilha,ento
osltimospratosaentraremnapilha,seroosprimeiroaserlavados,logoqueeles
forem lavados eles sairo da pilha, dando espao para os pratos de baixo a ser
lavados.

ClaramentepodemosperceberovelhoditadoOs ltimosseroosprimeiros eesta


regratambmpoderserimplementadoemJAVA.

9.2.1.ImplementandoPilhaemJava
ParaquepossamosimplementarumapilhaemJavatemosqueusaraClasseStack,dessa
forma:

Stackpilha=newStack();

OObjetopilhaserresponsvelporcontermtodoaoqualpoderemosincluir,retirar,
emostraroultimoelementodapilha,vejanatabelaabaixoosseusmtodosesuas
funes:

Mtodo Funo
empty() VerificaseapilhaestvaziaretornandoumBoolean
push(); Insereumnovoelementodapilha
pop(); Retornaeretiraoultimoelementodapilha.
peek(); Retornaoultimoelementodapilhasemretirlo.

Vejaumaimplementaopratica:

78
Curso Java SE - UTD 79

Oselementosnesseexemploestoinseridosnaseguinteordem:
5 6 1 7 3

Retirandoos3primeiroselementosdapilhacomomtodopop,temos:

5 6

Inserindo o Elemento 10 e 1 na Pilha usando o mtodo push , temos:

5 6 10 1

Sendo assim, se usarmos o mtodo pop mais 4 vezes, estes elementos seriam retornados e
retirados da pilha na ordem inversa mantendo a pilha vazia. O Comando pop no retorna null
quando a pilha estiver vazia, ento recomanda-se sempre verificar se contm elementos na pilha
usando o mtodo empty.

Vrios sistemas usam esse recurso, um deles bem usado por ns sem percebermos, imagine que
est digitando um texto e precisa desfazer uma operao. Cada elemento de Input posto em
uma pilha e quando usamos o CTRL+Z como usar um pop na pilha de retirando apenas o
ultimo elemento digitado.Pesquise por mais implementaes usando o recurso de Pilha.

79
Curso de Java SE - UTD

Capitulo10. Colees:ListeMap

10.1.IntroduoaColees/Collections

AprendemosemcaptulosanterioresqueexisteumaestruturadedadoschamadaArray.
Essa estrutura de dados elafoi criada para guardar na memria do computador dados
primitivosouobjetosdomesmotipo,demaneiraorganizada(blocodedadoscontnuo),em
quecadainformaopodeseracessadaporndices(index),
AestruturadedadosArraymuitoinflexvel,precisodefinirseutamanhoassimque
nsacriamos.EissopodegerarumproblemaparansprogramadoresJava.
Vamosanalisaraseguintesituao:
CriaremosumArrayparaguardarosnomesdeumalistade10alunosdoCursodeJava
UTD:

Massenomeiodomeuprogramaeuprecisaracrescentaraminhalistamais20alunos.
ComootamanhodoArray alunosNomes foidefinidocom10posiesentonoseria
possveladicionaros20novosalunosaessaestrutura,teramosquetratarisso.Umadas
alternativasparafazerissoacrescentaroseguintecdigo:

80
Curso de Java SE - UTD

Comofacilitaristo?
ComousaroconceitodeArray,pormcomumpoucomaisdeflexibilidade?
Coleespodemserasadaparaesteproblema.Umadasformasdepensarnascolees
comoArraysturbinadas,incrementadascomvriasfuncionalidadeseregras.
A definio formal de Colees : estruturas de dados utilizadas para armazenar e
manipularinformaes,ouseja,soobjetosquerepresentamumgrupodeobjetos.
Essecaptulotemcomoobjetivoabordarasprincipaisfuncionalidadeseregrasdeduas
dasprincipaiscoleesdoJava:ListeMap.

Anotaes

81
Curso de Java SE - UTD

10.2.CollectionListouColeoLista
Umalistaumacoleodeelementosarrumadosnumaordemlinear,isto,ondecada
elemento tem um antecessor (exceto o primeiro) e um sucessor (exceto o ltimo).
Normalmenteimplementadacomo"Array"ou"ListaEncadeada".AListapodesermantida
ordenadaounoeasoperaesmaisimportantesdeumacoleodotipoListaso:

Adiodeelementos
Adicionarumobjetoemqualquerlugardalista,fornecendoondicedesejado;

Remoodeelementos
Remover um objeto presente em qualquer lugar da lista, fornecendo o ndice
desejado;

Acessoaoselementos
Obteroelementodequalquerposiodalista,fornecendoondicedesejado;
Iterarsobreoselementos;

Pesquisadeelementos
Descobrirseumcertoelementoestnalista;
Descobrirondicedeumcertoelementonalista(ondeest);

Indagarsobreatributos
Obteronmerodeelementosdacoleo;

EmJavaexistemtrsclassesquetrabalhamcomaColeodotipoListaouListelasse
encontramnopacote/packagejava.util.Soelas:
Vector
ArrayList
LinkedList

EscolhemosexplanarnessecaptuloaclasseJavamaisutilizadaparaimplementarlistas
queaclasseArrayList.

82
Curso de Java SE - UTD

10.3.ArrayList

AcessandoadocumentaodoJava7podemosvisualizartodasasespecificaesdessa
classe,usadaparaprogramarcoleesdotipolista.Abaixotabelacomtodososmtodosda
classeArrayList:

83
Curso de Java SE - UTD

Desses mtodos listados na documentao do Java 7 iremos estudar os mtodos


principais,osquaisfazemasaesdeadiodeelementos,remoodeelementos,acesso
aoselementos,pesquisadeelementoseindagarsobreatributosdeumadeterminadalista.

10.3.1. CriandoumaListaemJavausandoaClasseArrayList
Para criar uma lista usando a Classe ArrayList do Java, escreva em seu programa a
seguintelinhadecdigo:

tipo:tipodoobjetoquevocquerguardanalista.Ex:Integer,String,Carro,Pessoa...

Exemplo:

Naverso7doJavavoctambmpodecriarumalistadessaforma:

Observao:

TodasoscdigosquetrabalharemcomlistasusandoaclasseArrayListprecisamimportar
aclasseArrayList.Issopodeserfeitoadicionandoaseguinteinstruonocabealhoda
classe:
importjava.util.ArrayList;

10.3.2. AdicionandoelementosemumaLista
AgoraquevocjcriouseuobjetoListavocpodeadicionarelementosdentrodela.As
Listasquandocriadaselasnopossuemnenhumelemento,ouseja,elassoListasVazias.
Na Lista, diferente do Array, voc no especifica seu tamanho, ela cresce de forma
dinmicamedidaquevocacrescentadadosaela.
VamosaprendercomoadicionarelementosaumaLista,paraissoiremosusaromtodo
add()quepertenceaclasseArrayList.

84
Curso de Java SE - UTD

Exemplo:

O mtodo add(), usado da forma mostrada acima ele sempre coloca o novo dado
adicionadolistanaultimaposiodamesma,maspodemosutilizlodeoutramaneira,
detalformaquepodemosescolheraposioemquequeremosadicionaronovoelemento.
Vamosvercomoficaessaoutraformadeusarmtodoadd().

Exemplo:

ParavisualizartodososladosdalistanaformadeumaStringuseomtodotoString(),
destaforma:

Vamosaplicaressemtodonoexemploemquecriamosumalistadeanos,ficardesta
maneira:

85
Curso de Java SE - UTD

Sadadoprograma:

10.3.3. RemovendoelementosdeumaLista

Pararemoverumdadodalistautilizamoso mtodoremove() daclasseArrayList.O


mtodoremove()funcionadaseguinteforma:

Vamosaplicaressemtodonoexemploemquecriamosumalistadeanos,ficardesta
maneira:

86
Curso de Java SE - UTD

Outraformadeusaromtodoremove()passandoparaomtodooobjetoquevoc
querremover.Ficandodestaforma:

Exemplo:

Sadadoprogramasemomtodoremove():

Sadadoprogramaaplicandoomtodoremove():

10.3.4. AcessandoelementosdaLista
Para acessar um valor de uma determinada lista usamos o mtodo get() da classe
ArrayListdessaforma:

Exemplo:

TemosmtodosnaclasseArrayListparaauxiliarnainteraodalista,ouseja,percorrera
listaacessandoosseusvaloresemtodasasdireespossveis.
Essesmtodosprecisam,almdalistaqueiramauxiliarapercorre,umobjetodotipo

87
Curso de Java SE - UTD

ListIteratorondeesseobjetosercomoumleitordeposiesdalistaquepodepercorrera
listaemtodosossentidospossveis.
Vamosentendermelhorcomoseguinteexemplo:
Vamoscriarumalistaem Java,usando a classeArrayList,paraguardar o nome das
linhasdenibusdeFortaleza.

AgoravamoscriarumobjetodotipoListIterator,ondeesseobjetosercomoumleitorde
posiesdalistaquepodeserdeslocadoparafrenteeparatrsaolongodeumalista.Para
criarumobjetodotipoListIteratorprecisamosimportaraclassequecriaesseobjetoparao
nosso programa, pois esse objeto no pode ser instanciado pela classe ArrayList. A
importaodaclassefeitaadicionandoaseguinteinstruonocabealhodesuaclasse:

importjava.util.ListIterator;

Aps importar o mtodo podemos criar nosso objeto do tipo ListIterator da seguinte
maneira:

Porfim,podemosusarosmtodosdaclasseArrayListquenosajudamapercorreruma
lista,daseguinteforma:

88
Curso de Java SE - UTD

Sadadoprograma:

DeformasemelhanteaomtodohasNext()eomtodonext()podemosaindausarem
nossosprogramasJavaosseguintesmtodos:
MtodosparaauxiliarpercorreumaListausandoaclasseArrayList
hasNext():retornatrueseoelementolidopelopercorredorListatemsucessor,caso
contrrioretornafalse;
hasPrevious():retornatrueseoelementolidopelopercorredorListatemantecessor,
casocontrrioretornafalse;
next():fazopercorreListaavanarparaaposioseguintedalistaeretornaronovo
valorlido;
previous():fazopercorreListaretrocederparaaposioanteriordalistaeretornaro
novovalorlido;
nextIndex():retornaondicedoelementosucessoraoelementolidopelopercorreLista;

89
Curso de Java SE - UTD

previousIndex(): retorna o ndice do elemento antecessor ao elemento lido pelo


percorreLista;

10.3.5. PesquisandoelementosnaLista

Pesquisarumelementonalistabastantesimples.VamosusaromtodoindexOf()que
seencontranaclasseArrayListparapesquisaemumalista.Essemtodoretornaovalordo
ndicedoobjetoprocuradoseeleexistirnalista,casocontrrioretorna1.

Exemplo:

Sadadoprograma:

90
Curso de Java SE - UTD

10.4.CollectionMapouColeoMapa
Ummapaarmazenapares(chave,valor)chamadositens,essaschavesevalorespodem
serdequalquertipo,portanto,achaveutilizadaparaacharumelementorapidamente.
Estruturasespeciaissousadasparaqueapesquisasejarpida,como"TabelaHash"ou
"rvore".Osdadosarmazenadosnosmapaspodemsermantidosordenadosouno(com
respeitoschaves).
AcoleodotipoMapadiferedasListaspordiversascaractersticas,asprincipaisso:
asestruturasdedadosqueasimplementam;
na coleo do tipo Mapa podemos escolher o tipo e o valor que tero as
chaves(ndices),atravsdelasteremosacessoaosdados.Aschaves(ndices)edadosdos
Mapaspodemserdequalquertipo,inclusiveumobjeto.JnasListassomenteosvalores
armazenados podem ser de qualquer tipo, seus ndices so sempre nmeros inteiros
indexados a partir do zero de forma automtica, medida que vamos adicionando
elementoscoleo.
AsoperaesmaisimportantesdeumacoleodotipoMapaso:

Adiodeelementos
Adicionarumitemnomapa(fornecendochaveevalor)

Remoodeelementos
Removerumitemcomchavedada

Acessoaoselementos
Iterarsobreositens

Pesquisadeelementos
Descobrirseumelementocomchavedadaestnacoleo

Indagarsobreatributos
Obteronmerodeelementos
Observequeoacessocoleosemprefeitaconhecendoachave
VamosutilizaraclasseHashMapparatrabalharcomcoleesdotipomapaoumap.

91
Curso de Java SE - UTD

10.5.HashMap
A classe HashMap uma implementao da interface Map do pacote java.util, e
possibilita trabalhar com mapeamento de objetos no esquema chave/valor, ou seja,
informadaachave,resgatoovalor.
AcessandoadocumentaodoJava7podemosvisualizartodasasespecificaesdessa
classe, usada para programar colees do tipo mapa/map. Abaixo tabela com todos os
mtodosdaclasseHashMap:

VamosexplanarosprincipaismtodosdaclasseHashMap,mtodosquenospermitir
criar,adicionar,remover,selecionarepesquisaritensemumacoleodotipoMap.

10.5.1. CriandoumacoleodotipoMapausandoaClasseHashMap
ParacriarummapausandoaClasse HashMapdoJava,escrevaemseuprogramaa
seguintelinhadecdigo:

tipo_da_chave:coloque otipo queter achave/ndicedo seu Map, essachave ser


usadaparaacessarosvaloresguardadosnoMap;
tipo_do_valor:coloqueotipoqueterosvaloresqueseroguardadosemseuMap;

92
Curso de Java SE - UTD

Pronto,dessaformajinstanciamosumacoleodotipoMapusandoaclasseHashMap.
AgoratemosqueinserirelementosacoleodotipoMap,poisscriamosoMap,mas
nohelementosdentrodele.
LembresedeimportaraClasseHashMapparaseuprograma,jqueestamosusandoa
para implementar e trabalhar com Colees do tipo Mapa. Podemos importar a classe
colocandoaseguinteinstruonocabealhodoprogramaoqualestamosescrevendo:
importjava.util.HashMap;

10.5.2. AdicionandoelementosemumacoleodotipoMapa
ApscriaroseuMap,podemosadicionarumelementousandoomtodoput()daClasse
HashMapdaseguinteforma:

objeto_chave:valordoobjetoqueserachavedeacessoparaosvaloresdomapa;
objeto_valor:valordoobjetoqueserguardadonomapa;

Exemplo:
VamoscriarumMapparaguardarestadosesuasrespectivascapitais.Osestadosseroas
chaveseascapitaisseroosvaloresguardadosnoMapa,ambosserodotipoString.

Agora vamos adicionar os valores ao nosso mapa usando o mtodo put, da seguinte
forma:

VamosusaromtodotoString()paravisualizarcomoestoosdadosdentrodonosso
mapa,daseguinteforma:

SadadoPrograma:

93
Curso de Java SE - UTD

10.5.3. RemovendoelementosemumacoleodotipoMapa
Para removerelementosdeumacoleo dotipoMapausandoosmtodosdaClasse
HashMapusamosomtodoremove().

objeto_chave:chavedeacessodoelementoaserremovidodomapa;
Omtodoremove()retornaumaStringcomovalorremovidodomapaouretornao
valornull senoforachadonenhumvalorassociadoachavepassadanoargumentodo
mtodo.
Exemplo:
VamosremoverumacapitaldomapacidadeEstadocriadoanteriormente.Ocdigoir
ficardessamaneira:

Sadadoprograma:

94
Curso de Java SE - UTD

10.5.4. Selecionando/PesquisandoelementosemumacoleodotipoMapa
O mtodo de seleo get() da classe HashMap o mesmo mtodo usado para se
pesquisarumvalordentrodeummapa.Essemtodofuncionadaseguinteforma:

objeto_chave:chavedeacessodoelementoaserselecionado/pesquisadodomapa;

Exemplo:

Sadadoprograma:

10.5.5. NmerodeelementosemumacoleodotipoMapa

Parasabermosonmerodeelementoscontidoemummapapodemosutilizaromtodo
size(), esse mtodo pode ser usado de maneira semelhante com colees do tipo Lista
usandoaclasseArrayList.

Omtodosize()funcionadaseguinteforma:

A chamada ao mtodo size() nos retorna um valor inteiro que a quantidade de


elementosdeummapa.

95
Curso de Java SE - UTD

Exemplo:

Sadadoprograma:

Anotaes

96
Curso de Java SE - UTD

Capitulo11. InterfaceGrficacomUsurio
GUI

Vamos trabalhar agora a interface


grfica do seu programa em Java!

11.1.InterfaceGrficacomusurioGUI
A Interface Grfica com o Usurio, tambm conhecido como GUI Graphical User
Interface,emJava,feitaatravsdebibliotecasdeclasses,sendoqueaprimeiraasurgir
foi a AWT(Abstract Window Toolkit). A AWT surgiu j na verso 1.0, mas se tornou
confivel a partirdaverso 1.1.A maneiracomo as classesdessabiblioteca trabalham
garante a criao dos elementos da interface de usurio seguindo o comportamento
destinadosferramentasGUInativasdecadaplataforma(Windows,Mac,Solaris,...).
Algunsexemplosdestes elementosso: botes,listas,menus,componentesde textos,
contineres(janelasebarrasdemenus),caixasdedilogoparaabrirousalvararquivos,
almdeelementosparamanipulaodeimagens,fontesecores.
Aportabilidadedeplataformafuncionavabememaplicaessimples,masaplicaesque
envolviam elementos mais complexos, como menus e barras de rolagem, por exemplo,
apresentavamdiferenasdecomportamentoconformeaplataforma.Oqueaconteceufoi
que as aplicaes visuais feitas em Java no se pareciam, e nem tinham as mesmas
funcionalidades,comasaplicaesconvencionaisdecadaplataforma.

97
Curso de Java SE - UTD

Apartirdaverso2doJava,aJFC(JavaFoundationClasses)apresentounovosrecursos
para a construo da GUI das aplicaes, o que melhorou muito os problemas de
portabilidade.Soeles:
Java2D:novasfunesparadesenhosegrficos.
Drag&Drop:clicar,arrastar,copiarecolar.
Swing: biblioteca de classes extenso da AWT, onde so apresentados novos
componentes de interface e o que conhecido por look and feel, que uma
adaptaoperfeitadaGUIaosistemaoperacionalespecficodedesenvolvimento.
bomsalientarqueoSwingnosubstituioAWT,masokitdeferramentasGUImais
utilizadoparadesenvolvimentodeaplicaesvisuais.OAWTcontinuaexistindo,mantendo
amesmaarquiteturacriadaparaoJavaverso1.1.
OSwingpossuimuitomaisrecursos,almdegarantirmaiorportabilidadee,emboa
partedoscasos,maisfcildeusar.IssonosignificaqueouseutilizaAWTouseutiliza
Swing,normalmenteoqueacontecequeelementosdasduasbibliotecassoutilizados
conjuntamentenasaplicaes.

11.2.BibliotecasAWTeSWING
Soasfontesdasclassesqueutilizaremosapartirdaqui.Nelasmoramoscomponentes
grficosparaJava,eporissodevemosimportlasnoinciodenossasclassesgerenciadoras
detelas:
importjavax.swing.*;
importjava.awt.*;

11.3.JFrame
Podeparecerestranhoparaquemvemdeoutraslinguagens,comooDelphiouoVB,mas
emJava,cadatipodecomponentegrficoumaclassecomatributosemtodosprprios.
Eparautilizlas,devemosinstancilas.

11.3.1. CamadasJFrame
Antesquepossamoscriarnossaprimeirajanelaprecisamosconhecercomofuncionaa
hierarquiadoselementosquesoresponsveisvisualizaogrfica.

Frame

RootPane

LayeredPane

ContentPane

GlassPane

98
Curso de Java SE - UTD

Onde:
1. RootPaneRepresentaumacamadaqueirgerenciartodasascamadasinternas.
2. LayeredPaneContmumaregioparaBarradeMenueoContentPane
3. ContentPaneContmtodososComponentescomoumcampodetexto,campode
seleodeopes,etc.
4. GlassPaneCamadaqueporpadroinvisvel,pormpodeserusadoparamostrar
algumcomponenteporcimadasdemais,comoumaimagem.
AgoraquesabemoscomocomofuncionaumJframeiremoscriarnossaprimeirajanela
emjava.

11.3.2. NossaprimeiraJanelacomJFrame
AprimeiraemaissimpleschamaseJFrame,ecriatelasretangularessemnadadentro,
umespaoondetrabalharemoslogodepois.

OmtodoSetBoundstrabalhacomalocalizaoetamanhodatela,sendoaseguinte
ordem:distnciadocantoesquerdodatela,distnciadotopodatela,larguraealtura.
tela.getContentPane().setBackground(Color.RED);
Aqui,invocamosomtodoqueverificaqualocampodeContentdoJFrame,ouseja,a
regio onde no est o menu nem as bordas, e muda sua cor a partir do mtodo set
Background.Euuseiumabibliotecadecores,aColor,edefiniajanelacomovermelha;
Poderiaterusadoazul,cinza,verde,etc.
tela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Aqui,eudeterminoqualaaoaexecutarquandoesteJFrameforfechado.Nocaso,ele
fechaoprogramatodo,numefeitodeBREAK.AinstruoDISPOSE_ON_CLOSEapenas
levaroJFrameafecharsemderrubaroprogramatodo.
tela.setLayout(null);
Aqui, escolhi um Layout para o meu JFrame. Ou melhor, escolhi que seja nenhum.
ExistemLayoutsprontosparaJFrames,ondeosbotesficamdispostosemformadefileira,
ounoscantos,ouexpandidos.Amaioriatemumresultadogrotesco.Sequisermosdesenhar
nossatelacomliberdadeparafazlabonita,temosqueescolheroNULL;
tela.setVisible(true);
Depoisdepreparado,oJFramepodejficarvisvel.Estepassovemnofinaldetodaasua
montagem.

99
Curso de Java SE - UTD

Agoravamosvercomoficounossajanela.

11.4. CriandoumaclassecompropriedadesJFrame
NotpicoanterioraprendemoscomoconstruirumaJanelausandoaspropriedadesdo
JFRAMEdiretamente.Paraanossajanelacriada,omtodomaintinhaaresponsabilidade
diretadecriarumajanela.Paraessasituao,sequisssemoscriarumanovajanela
tnhamosquechamarnovamenteaClasseJFrameeatribuirtodasascaractersticas
novamentelinhaalinha.Podemosconstruirumajaneladeumaformamelhorcriandoum
prpriomodelocommtodos,encapsulamento,heranaeosdemaisrecursosaprendidos
sobreorientaoaobjetos.ParacriaronossomodelodeJFrameprecisamosprimeirocriar
umaclasseeherdladeJFRAMEdessaforma:

AssimnossaclassechamadaMinhaJanelaherdatodasaspropriedadesdeJFrame
atravsdaclassePai.
PodemosdefinirumpadroparaqualquerjanelacriadapartindodeMinhaJanela,
vamosagoradefinirquetodajanelanossaterobrigatoriamenteumttulo.Basta
inserirmosumconstrutoreredirecionaressevalorparaclassequetemaresponsabilidade
dereceberottulodeumaJanela.

Noconstrutor
podemostambm
definirqualqueroutrapropriedadenasuachamada,comocoordenadas,cordoplanode
fundo,procedimentoutilizadoquandoforfechadoajanela,layout,visibilidade,etc.Vejao
Exemploabaixoaindanomesmoconstrutor:

100
Curso de Java SE - UTD

AgoraindicamosquequalquerinstanciadeMinhaJanelaterasmesmaspropriedades,
sendodiferenciadasapenaspeloseuTtulo.
Vamosinstanciarnomtodomainaclassequeacabamosdedefinir:

Temosentoomesmoresultadodotpicoanterior,percebaquesequisermoscriaruma
2janelaporexemplo,noprecisamosdefinirtodasaspropriedadesnovamente,basta
instanciarumanovaMinhaJaneladefinindoumsegundottulo,assimteremosumanova
janela.
Usandoherana,podemosatravsdanossaclassedefinidaacessaroselementosdo
Jframebaseadonoseunveldeencapsulamento.NoExemploabaixousaremosomtodo
setLocation()paraalteraralocalizaodanosssajanela.Essemtodonofoicriadopor
ns,masfoidefinidopelasclassesPainasdefiniesdeheranadaClasseJframe.

Temosentooseguinteresultadofinal:

IremosusaroexemplodaClasseMinhaJanelaparacriaroscomponentesnosprximos
tpicos.

101
Curso de Java SE - UTD

11.5.JLabel
um pequeno componente com o qual colocamos pedaos de texto sem nenhuma
funo,anoseradeindicarparaquservemoscamposdeumatelaqualquer.

O cdigo acima no apresenta grandes novidades. Apenas instanciamos o Jlabel,


dandolhe um texto qualquer para exibir. Depois, demos o mesmo setBounds nele, em
seguidafizemosaaorealmenterevolucionria:
super.getContentPane().add(texto);
Adicionamos o objeto texto na tela usando super.getContentPane(). Note que o
setBoundsdotextopassaausarcomobordasasbordasdoJFrame.Eficacontidonele.
O JLabel pode ter desenhos por dentro, mas veremos isso mais adiante, quando
tratarmosdoIcon,outrotipodeobjetoJava.
Oresultadodenossajanelaesse:

102
Curso de Java SE - UTD

11.6.JButton
OJButton,finalmente,oboto.Colocamoselenastelascominmerasfunes.Estas
funes sero tratadas mais adiante, quando chegarmos s aulas sobre Eventos. Por
enquanto,bastanosdesenharosbotes.
OJButtonpoderserinstanciadodetrsformasdiferentes:
1. JButton()aqui,teremosdepoisquerodarummtodosetText(algumtexto)para
darlheumcontedo(umcontedoqueapareceparaousurio).
2. JButton(String)aqui,escrevemosalgumtextoparaaparecernobotoeousurio
saberdoquesetrata.
3. JButton(icon) neste caso, adicionamos uma figura ao boto para darlhe uma
aparnciapersonalizada.
Vejaestecdigo:

Noexemploacima,usamospraticamenteamesmatelacriadaantes,pormadicionamos
asrotinasdecriaodeumboto.Primeiro,instanciamos aclasse JButton eusamos os
mtodosjconhecidossetBoundsparadefinirsuascoordenadas.

103
Curso de Java SE - UTD

Anossajanelaficarassim:

11.7.JTextField
OJTextFieldumacaixautilizadaparaqueousuriopossaescreverumtextodeuma
linhas. Tratase deumcomponentebastantesimples,quetembasicamenteasmesmas
especificaesdoqueacabamosdevernoscomponentesanteriores.
Enriquecendoocdigoanterior,adicionandoumJTextField:

104
Curso de Java SE - UTD

OtratamentodotextodeumJTextFielddarsepormeiodedoismtodosbastante
simples:
getText()servirparacapturaroquousuriodigitounocampo.
setText()servirparadeterminarmosquetextodeveirnocampo.Muitotilquandose
abreumregistrodeumbancodedadoseocampoJTextFielddevereceberumcampode
registroparaalterao.
AnossajanelaficarassimapsacrescentaroJTextField:

11.8.Icon
AclasseIcontemumusobastantesimples,masmuitoimportante.Comela,podemos
carregarumaimagem(devidamentecriadaemumarquivoJPGouPNG),paradentrodo
programa,utilizandoestaimagemcomoquisermos.
Primeirotemosqueinserirumaimagemnoseuprojeto,crieumapastadentrodoseu
projetochamadaimgenelacoloquequalquerimagem, emseguida insera umaimagem
chamadalogo.png;
EmsuaJanelafaaoseguintecdigo

105
Curso de Java SE - UTD

No exemplo acima carregamos as informaes da


Imagem que importamos, em seguida pastindo da
construio de uma ImageIcon passando como
argumento url indicada, capturamos apenas as
informaes de Icon para ser utilizada nos nossos
compontens, alguns componentes aceitam Icon como
argumentonocontrutor,comoJbutton,Jpanel,etc...

11.9.EditandofontecomosetFont()
Podemosformatarasfontesdenossosbotesertulos...
VamosusaromtodosetFontdessaforma:

Nossajanelaficarassim:

11.10. JMenuBar,JMenueJMenuItem
Estasclassessoutilizadassempreemconjunto,paracriarummenunapartesuperiordo
JFrame, e deixar seusoftwarecom aquelafacilidadedeuso que os usuriosmodernos
exigem.
Aqui, comeamos a trabalhar uma modalidade de programao que costumo chamar
informalmente de empilhamento de objetos, pois os objetos s funcionam quando
colocamosumdentrodooutroemumaespciedepirmide.
OobjetoqueservedebaseoJMenuBar,adicionadodiretamenteaoJFrame,esobreele
votodasascoisas.EleabarraclaranoaltodoJFrame,dentrodaqualosmenusficaro.
Depois,temososJMenu,queficamdentrodaMenuBarepodem,inclusive,ficarum
dentrodooutro.DentrodosJMenu,ficamosJMenuItem,quetmumafunocadaum.
Paraativarsuasfunes,utilizaremososListeners,maisadiante.Deixemosissoparaoutro
captulo.
Criandoumajanela,umJMenuBar(containerdemenus),Menus(JMenu)eporfimitens
demenus(JMenuItem).

106
Curso de Java SE - UTD

AgoravamosadicionaroJMenuBardentrodajanela,depoisadicionarosJMenusdentro
doJmenuBar,eporfimadicionardentrodoJMenuitensdemenus(JMenuItem).

Aultimalinhadecdigorepresentaummtodoqueserresponsvelpelasconfiguraes
dajanelaPrincipal,vejaabaixoasuaimplementao.

107
Curso de Java SE - UTD

Agoravamosvercomoficounossa
nossajanela:

11.11. JCheckBox
UmaJCheckBoxumdaquelescomponentesemquevemosumacaixinhaquadradacom
umafraseaolado,epodemosmarcaroudesmarcaracaixinhaquadrada.
As CheckBoxes no so usadas para fazer escolhas com apenas uma opo vlida,
podendosertodasmarcadasoutodasdesmarcadaslivremente,desdequeoprogramador
nocoloquerestriesnoprpriocdigo.
VejacomotrabalharcomJCheckBoxnoexemplodecdigoabaixo:

Depois, para termos um retorno do valor de cada JCheckBox, utilizamos o mtodo


isSelected(),queretornaumvalorboolean.

108
Curso de Java SE - UTD

Assim:
booleanx=cbPizza.isSelected();
Ouainda:
if(cbPizza.isSelected()){
Funesaseremexecutadas.
}
Vejacomoficounossajanela:

11.12. JRadioButton
OJRadioButtonfuncionaapenasquandopensamosneleinseridoemumgrupo.Euposso
colocar quantas opes quiser, formando um menu, e se todos os meus JRadioButtons
estiveremnomesmogrupo,ousuriospodermarcarumdeles.Aomarcarum,osoutros
perdemamarcao.Paraisso,temosqueadicionartambmumButtonGroup.

109
Curso de Java SE - UTD

VejaocdigoabaixoesaibacomotrabalharcomJRadioButton.
Vejacomoficounossajanela:

11.13. JComboBox
A JComboBox desenha uma caixinha parecida com a JTextField, s que ao invs de
termos um texto a escrever, temos uma seta com a qual abrimos uma fileira de
possibilidadesdepreenchimentoparaacaixa.
Veja como trabalhar como trabalhar com JcomboBox, observando o exemplo abaixo:

110
Curso de Java SE - UTD

Paraobteroretornodasinformaes,temosumasriedemtodosquenosdizemoque,
afinal,ousurioescolheu.Osmaisusadossoosseguintes:
comb.getSelectedItem()
EsteretornaotextoqueestnacaixadoCombo.Poderserusadoespecialmentepara
quandocolocamososetEditableemTRUE,ouseja,quandoousuriopodeescreverna
caixa.OretornodestemtodoumaString,comotextodacaixa.
comb.getSelectedIndex();
Estemtodoretornaondicedoitemselecionado(comoseasopesfossemumvetor).
Vejaabaixooresultado:

11.14. MaisComponentesSwing
ExistemmaiscomponentesSwing,almdosmostradosataqui.Forammostradosos
principaiscomponentes.CasovocpreciseoudesejeconhecermaiscomponentesSwing
acesse:
http://docs.oracle.com/javase/7/docs/api/

Anotaes

111
Curso de Java SE - UTD

Capitulo12. GerenciadoresdeLayout

12.1.GerenciadoresdeLayout

Gerenciamentodelayout(LayoutManagement)oprocessodedeterminarotamanho
e a posio dos componentes na janela grfica do programa. ele o responsvel por
determinar onde o componente ir ficar, como ir ficar, qual o comportamento a ser
tomadonahoraderedimensionaratela.

PorpadrooJavavemcomcincogerenciadoresdelayout:BorderLayout,BoxLayout,
FlowLayout, GridBagLayout, GridLayout e um adicional chamado CardLayout. So os
gerenciadoresdelayoutquedeterminamcomooscomponentesiroficaremseuprograma,
portantoumbomconhecimentosobreofuncionamentodosmesmosfazsenecessriopara
terdomniodeprogramaogrficaemJava.

Geralmente,quandochamamosomtodo"add"paraadicionarumcomponentenatela,
eleserposicionadodeacordocomogerenciadordelayoutpreviamenteconfigurado.A
maiorpartesimplesmentevaiadicionandooscomponentescombasenaordememque
foram programados, porm alguns outros, como o BorderLayout, necessitam que voc
informeaposiorelativanocontainer.

Aescolhadogerenciadordelayoutdependemuitodasnecessidadesdoprograma.Por
padrotodosobjetos Containers soconfiguradosparausaroFlowLayout,enquantoum
JFrameeJDialogjusamoBorderLayoutcomopadro.

Em ambos os casos usado o mtodo "setLayout" para especificar um novo layout


manager,sendonecessriopassarparaestemtodootipoquedesejamos.Abaixohum
exemploparacadatipodegerenciadordelayout,ficandoassimfcilparavermoscomo
cadaumsecomporta.

112
Curso de Java SE - UTD

12.2.BorderLayout
BorderLayouttrabalhacomoalgumascoordenadaspredefinidas,comonorte,sul,leste,
oeste ecentro.ParapoderusaresserecursotemosqueantesusaromtodosetLayoutque
anteseradefinidocomonullparaumanovainstanciadeBorderLayout.
VejaoExemploabaixo.

Vejacomoficounossajanela:

113
Curso de Java SE - UTD

12.3.BoxLayout
UmBoxLayoutcolocaoscomponentesemumanicalinhaoucoluna,permitindoainda
quevocespecifiqueoalinhamentodeles.ParaqueumBoxLayoutpossaexistirtemosque
passarcomoargumentonoseuconstrutorocontainerqueseraplicadoeumalinhamento
quepoderserhorizontalouvertical,representadopelasconstantesestticasdaclasse
BoxLayout:X_AXIS(paraalinhamentohorizontaldosmeuscomponentes)eY_AXIS(para
alinhamentohorizontal)

Nossajanelaficardessaforma:

114
Curso de Java SE - UTD

12.4.FlowLayout
Comoditoanteriormente,umFlowLayoutogerenciadorpadrodetodoContainer,
casonosejaespecificadooutro.FlowLayoutposicionaoscomponentesladoalado.Elase
diferenciadeumBoxLyoutpoisseuscomponentespodemsealinhahorizontalmentee
verticalmentebaseandosenasdimensesdocontainer.Vejaoexemplodesuaaplicao.

Vejacomoficounossajanela:

115
Curso de Java SE - UTD

12.5.GridLayout
UmGridLayoutatuacomoumagradedeumaplanilhadeclculo,colocandoos
componentesemlinhasecolunasprdeterminadasedeixandooscomponentescomo
mesmotamanho,paraissoprecisamosdefinirumlimitedelinhasecolunasparaesse
layout.Vejaissonoexemploabaixo

Vejacomoficounossajanela:

116
Curso de Java SE - UTD

12.6.GridBabLayout
OmaisflexvelgerenciadordelayoutoGridBagLayout.Elepermitecolocar
componentesemgradesdecolunas,sendopossvelumcomponenteocuparmaisdeuma
colunaaomesmotempo.Aslinhastambmnoprecisamnecessariamenteterosmesmos
tamanhos,ouseja,vocpodeconfigurardiferenteslargurasealturasdeacordocoma
necessidade.Eisoexemploabaixo.

Vejacomoficounossajanela:
Logicamentepossvelfazermuitomaiscomosgerenciadores
delayout,hvriasmaneirasdeconfigurareutilizar.Paraobter
maisinformaessobreosmtodosdisponveisparacadaum
consulteaAPI,disponvelem:
http://docs.oracle.com/javase/7/docs/api/

117
Curso de Java SE - UTD

Capitulo13. Eventos(Listeners)
EventosemJavanadamaisquemtodosespeciaisquesorealizadosbaseadoem
algumaaodeumusurio,sejaele,umclique,umdigitardeumatecla,aopassaro
mouse,etc..Iremosvernosprximostpicoscomocomoutilizaressesmtodosespeciais
emnossosprojetos.

13.1.ActionListener
OActionListener.Tratasedeumaclassequedetectasehouveumaaoemuma
referenciaaqueelaestassociada(umboto,porexemplo)eque,dependendodaao,
executarumafuno.ActionListenerrepresentadoporumainterface,entoparaquea
minhaclassepossarealizartratamentodeeventos,aprimeiraimplementaoqueiremos
fazerdarumimplementsnaclassequequeremosteressafuncionalidade,vejamoso
exemploabaixo:

Iremostambmcriarumacaixadetextoeumbotoparautilizarumeventoqueir
capturaroquefoidigitadoeimprimirnatela.
AImplementaoActionListenerirobrigaraminhaclasseaconterummtodo
chamado,actionPerformed,comumparmetrodotipoActionEvent.Vejaa
implementaoabaixo.

Agorairemosconstruirnossolayout:

Osmtodosqueiremosutilizarparacriaroeventoso,addActionLIstenere
setActionCommand,elesseroresponsveisporredirecionareenviarumcomandoparao
mtodoquenscriamosactionPerformed.

118
Curso de Java SE - UTD

addActionListener:Mtodoqueirreceberumaclassequeirconteruma
implementaoactionListener,nonossocaso,nossaprpriaclasseteressemtodo,
omotivodoargumentothisnoexemploanterior.
SetActionCommand:Mtodoqueirenviarumainstruoparaomtodo
actionPerformed,comesserecurso,podemosporexemplocriaroutrosoutrosbotes
enviandooutroscomandosparaomesmomtodorealizandoassimoutrasfunes
emumamesmajanela.Noexemploacimautilizamosumcomandoquedefinimos
comoOK.

IremosagoravercomoiriremosimplementaromtodoactionPerformed:Oprocesso
bemsimples,casooActionCommanddoeventoesejaigualaOK(comandoque
definimosusandosetActionCommand),umacaixacomumamensagemaparecernatela
informandoonomedigitado.

SeparamodificarumcomandoutilizamosomtodosetActionCommando,paraque
possamosresgataroquefoimodificadousaremososmtodogetActionCommandoe
compararemoscomocomandoquequeremosacionar.
Agorairemoscapturaroquefoidigitadonacaixadetexto,oexemploacimamostraque
chamamosoatributotxtNomequefoidefinindocomJtextFieldeutilizaromtodo
getText()quetemcomoretornoumaString,essaStringsercapturadaimpressanatelano
momentodocliquedoboto.Vejamosoresultadodessaoperao:

Importante:Antesdepassaparaoprximotpico,tenhacertezaqueentendeutodosos
processosenvolvido,poisosprximoeventosseroimplementaessemelhantes.

119
Curso de Java SE - UTD

13.2.FocusListener
OFocusListenerseparececomoActionListeneremseumododeconstruo,masserve
paradetectarquandoofoco(ouseja,ocursor,aseleo,nooponteirodomouse)est
sobreumobjetoouno.
Elepossuidoismtodosqueprecisamserimplementados:ofocusGainedeofocusLost,
umparaquandooobjetoganhafocoeoutroparaquandoperde.
Paraativaromtodo,usamosaddFocusListener.Usandoesserecursoiremosmostrarum
exemplodealteraodacordeumaplanodefundobaseadoemumfocoemumacaixade
texto.Vejaoexemploabaixo:

OresultadoFinal:

120
Curso de Java SE - UTD

13.3.KeyListener
OKeyListenerumainterfacequeserveparaquepossamoscoordenarasaesdo
usuriocomotecladoquandoeleestescrevendoemalgumespaoouutilizandoalguma
funo.PossoatribuirKeyListeneraqualquerobjetogrficodoJavaedetectarquandoeo
queousurioestteclando.
AimplementaoKeyListenerobrigaater3mtodos:
keyTyped:Serativadoaopressionarumbotocaractereounumricodoteclado.
keyPressed:Serativadoaosegurarumboto,comoSHIFT,CTRL,ALTetc.
KeyReleased:Serativoaodeixardepressionaroboto.
Paraativaromtodo,usamosaddKeyListener.Noexemploabaixoalteramosacorde
planodefundodacaixadetextoparacadaumadasaesrealizadaspelousurio.

NOTA:Podesedetectarqualobotoapertadopelousurioexplorandoavarivel
KeyEvente,queretornarocdigodateclaapertadacomomtodo:getKeyChar()

121
Curso de Java SE - UTD

13.4.MouseListener
OMouseListener,comoseunomeobviamenterevela,serveparatratarmoseventos
relacionadosaousodomouse.

AimplementaoMouseListenerobrigaater5mtodos:
mouseClicked:Serativadonocliquesimplesdomouse.
mousePressed:Serativadoaosegurarocliquenomouse.
mouseReleased:Serativadoaodeixarocliquedomouse.
mouseEntered:Serativadoaoentrarnaregiodocomponentepelomouse.
mouseExited:Serativaaodeixararegiodocomponentepelomouse.
Paraativaromtodo,usamosaddMouseListener.Ocdigoabaixomostracomoalteraro
planodefundodoContainerusandoeventosdomouseVejaaimplementaesdos
mtodosabaixo:

Dica:Nspodemos
saberqualalocalizao
doponteirodomouse
utilizandodoismtodos:
getX()retornaa
posiodomouseno
eixoX(horizontal)
dentrodoobjetoaque
estamosatribuindoo
MouseListener.
getY()Fazomesmo,
squecomaposiodo
eixoY(vertical).

122
Curso de Java SE - UTD

Bibliografia
http://www.guj.com.br/
http://pt.wikipedia.org/wiki
http://jedi.wv.com.br/
http://docs.oracle.com/javase/7/docs/api/
http://jacques.dsc.ufcg.edu.br/cursos/p2/html/ed/colecoes.htm
http://www.xti.com.br/carreira/universidadexti.htm
http://pt.scribd.com/doc/86301078/ApostilaJava

123

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