Você está na página 1de 703
para iniciantes Javar 6? edicao Crie, compile e execute programas Java rapidamente q Herbert Schildt Q O autor (0 autor de best-sellers Herbert Sehildteserove incansavelmente sobre programagio hai quase tr décadas ¢ uma das principus utoridades na inguagem Java. Seus livros de programasdo venderam milhies de cps no mundo intio ¢ foram t- ‘duridos par diversos idiomas. E autor de virion livtos sobs Java, incluindo Java: ‘The Complete Reference, Herb Schld's Java Programming Cookbook e Swing’ A Beginners Guide. Ee também eseroveu sobre C, C++ ¢ CH. Emboratenha ineresse cm todas as drcas da computa, seu foco priacpal slo as linguagens de progra- ‘magio, ineluindo compiladores,interpretadores e Tinguagens de conto robe. Tambem tem grande inlerese na palronizagio de Tinguapens. chil tem gradua 0. poe-gradoag pola Universidade de Ilincis, Seu site ¢ wer HerSchildt.com. 0 editor técnico Dr. Danny Coward trabalhou em oss as edges da pataforma Java Ele eonduziu defini dos Java Servlets para primeira versio da plataforma fava BE © para fem dela, os servigos weh para a plataforma Java ME, ea estratgi plaejemento de Java SE 7. Fundos a tenologia JavaFX e, mais rcentements, projeton 9 maior scréscim feito ao pao lava EE 7, « APLJava WebSocket Da codificagio em ava 30 projeto de APL com especialistas da indistia ea trabalho por viios anos como txceutivo do Java Community Process, ele aun uma perspectvasingularmeate tampa de virios aspectos da tecnologia Java. Além disso, € autor de Java¥ehso ‘ket Programming de um livto ainda asec publicado sobre Java EE. Dr. Coward tem graduasio, mestrdo e doutordo em Matematica pela Universidade de Oxfor. oe, ’Bx Se ‘av par incites: ci, comple e execute programas Ja npidanente [recuse elewonico| Hester Sculdt, ‘tate: Ai José Coelho Céad Siva tevido ‘een Mara Livia lank Lishs, 6. Peta Alegre oaks, 2015 aid como iv impress em 205, ISBN OTE 85 4200357-6 1. Lingugem de programagno fav Tao, eDU ODL ‘Geialogazao ma pblcago: Poiana Sanchez de Avaujo CRB 102008 Herbert Schildt 6 edigao Crie, compile e execute programas Java rapidamente “Tradogé: lit José Coelho Corns da Siva Revisio tecnica: Maria Lica Blanck Lisa putes rm Cacia da Computaco pela UERGS Profesor do lasts de lfomiica da UFRGS Verso impressa desta obra 2013 2015 ‘Ova riginaiente pobica sob oul Jana A Nepnners Guide, hen ISBN OT IH09252/978-0.07-180025-2 [igi orga 02014, The Mera 4 Gaal Faseation Holdings, LLC, New York, New Yank {00 inl parx agua portugues ©2015, Hookmaa Compania ior Lida, una empresa do (Grupo 4 Fatencio S.A. Too sis reservados. Geren tra: Arysinha Jaoques Aon ‘Colborne eto: dor Aten Hella Prepare origins: Bien Rae Letra ina: ava Sines Pes ‘Caps Kale Fnotondo Heir tesobre cae xg rac lta Techooks Reservas dono ditelios de pablo, m ag portage, 2 [ROOKMAN EDITORA ETDA._ uma empresa do GRUPO A EDUCACAO S.A Av. Jerome de Ornelas, 670 Santana ‘900-340 Porto Aesre RS ne: (51) 3027-7000 Fox: (51) 3027-7070, prota a dupicagto ou reproduto deste Yume ow oven pate, sb quaiguee fiasco pr quar mes etn, cin, raga, fotos, dba m2 Web ‘cout, sem prise expsa da tor, nde Sto Pato [vn Maced Soues, 10738 Paya 5 Con Espace Cte ia Anasico ~05095-038~Sa0 Paulo SP Fone: (11) 3665-1100 Fax: (1D) 67-1333 SSAC 0800 703-3444 — wa grape co be IMPRESSO.NO BRASIL, PRINTED IN BRAZIL Origen da inguager Jase ‘Qual arelagao ene Java, Ce CH Qual a elagioente Jae OPP CContfuides da tinpuagem Iva pan a Inter ‘Applets so Segurancs Porat Co (O sepredo ds inguagem Java: o bytecode 0 ang $0 enema rogramacao orcad objtoe CObtendoo lava Developmen Kit Um primeir programa simples. Inserindoo programs... - Compan progam Primei exemple de programa ‘Tratando eros de sins {Um segundo programa sings ut tipo de dad w Sumario ‘Tente Isto 1-1 Converta gales em litres, ‘Duss instragoes de coal ‘A instgso Otago for Cre bioes de eg. nn Fone vig: psonanea Prticas de rest = “Tele Lte 12. Metbere 0 conve emnnvnnennnrnnenmemenn ‘As pulveaschave Java a emtiteadores er av. Sunn Asibliotcas de clases lava 2 “este do Capto Introdusao a tipos de dads € operadores nevi Por ques tipos de datos so importants ‘Tes ros dingo “Teate Ito 2-1 Qual 6a distancia do relampage? Liters = “Liters hexadecimal, acta bine = Sequins de escape de ericteres “ Liters de rings. so Um exame mas detalhado dss varies. Inland uma varie, Iniitizageo dni scope e tempo devia ds varves. Operator nnn ‘Operaiones artnticos " Torementnedecremento.- 7 ‘Operas eiciemas gion ‘Operators lpios de cao-ceeile (© opecaor de aibuiga. Atebaioesabreviads = = ‘Conversio de ips em atrbugbes. nn sie ‘Convertenda pos incampaties - “ Preceséncia de operadores. coo “eet eto 22. Taleo por ow operas bgitenee Expresses, a = ‘Convero de upos em expresses - oi Espagameatoe partes, “este do Capito. Sumario vil a “ : ot Ws aninhaos. ~ oe a) Aexcala feet co Clic o ‘A insueao switch, = = ee Instragies switch ania. Tene slo 31 Consiroa um sistem deat Jains TB 0 0 - Co 1 ‘texas ving g - 16 Panes ausents i ” O lgo init 1% Lagos sn cone 1” DDeclarundovariveis de contole de lago deat G0 ago ft snes 1D » wo a 3 O Lago for melborado Sn ago While nnn aba Otago do-it ‘Tente Isto 3-2 Methore o sistema de ajuda Java an Use beak pra sir de um Leo ° ‘Use break come wm forma de 10 - Introdugio u classes, objetos ¢ métodas, Fndamentos das les Forma geval de uma classe oo a Detinitd ua cass Como os objets so crises. Av varied de efereni Meteo ‘Ailend um método& cise Veil. Retormando de 1 MEOE0 Reta mwa sando pares... - "Adiionando um mdi paratizad Veblen vrvsrssosnnneen 1H ‘Tente fo 4-1 Crie ums clase de ajuds Consors. = ~ a CConsruores parametizados. Ln " ‘Adiconando um consrutor case Vehicle m Ooperadoe new fvsitAb0 evs Clea de xa “ “ O metodo finalize} vill Sumario Tene be 42. Dement sen deo ag. A palavrchave this... co “Teste do Capito. a mene Mais tipos de dadas € operadores women 132 Arrays. " : “Arrays unidimcnsionals. ‘Tente sto 5-1 Classfique um array. Araysmuldimensionas "Aeniysbidimersonsis Araysirepulas.. “Arrays des ou mals dimensdas Inicilizando arays mulidimensionais Sloane sera pr a delaras de rays 2 iret ' 43 144 “Tente lta 5-2. Uma clawe Quede. 146 (0 ag fr dees for 2ath 150 rand po arrays mulimensionss - 155, pind lao ferme - 154 Swings ns ecemttreertrcennune: 128 Consrindo sings ae saan: 13 Operando 0m stn. | “Amys de rng “ 158 Stings no pir er alters Comune 188 ‘Usando um sing par somtole um instr switch von 160 Usando arguments de ina de COMIN. nsnesssnninnnnnsnnsns WL Os opaaderes bis 162 ‘Os operadores bitwise AND, OR, XOK e NOT 163 (5 operadores de deslocament aan 1 Arbuigesaeviadas bitwise ” “Fente sto 5-3. Ui clase Show Bits nvnsennnnnnnnnnnnmninnnnnene 169 © opeaon - “este do Capito an ‘Verifleaso minuclosa dos métodas ¢ classes... ‘Contolando 0 acesso a membros de cast. ‘Masifeaderes de acess ds linguager Ja. “Tente lta 6-1 Melhore a clase Queve.. Passe objets para 0s métodas ‘Como or argumentoe x50 pasado Retornando jets Sobnecarg de mins one Sobrcarepando consrwoees ‘ise i6 arecmmemo cantina i urn RECUEBO ven : atendendo or membros enteos ‘locos erios. Tente Isto 63. A classiiagioripida Introdugo 3 lasses ainda itera. ‘Varars arguments em quantdade vail ‘Aspecosbiscos dos vara. . Sobrecaregando mdtados args ‘arars ambigvidde, . Teste do Capitulo 6 2 Horanga.. Aspton seo de beri [Aceswo a membros ea her Conse ering. Usando super para chammarconstruores d superclass. an Usando super pra cesta membros da supeelsse a ‘Tente Isto 7-1. Estenda a clase Vehicle. Ciando uma hierargus de véros nes. ‘Quando os consrtores So chamados?.cnrnnnnnen Referéncias da superclass abjcos da subclass. a 9 Sobreposigao de mes... ramones OS “Método scbtepostos do supote 20 politi. 26 Porque sbrepor meds? (mann 248 ‘pcan aceon emo TS =e oe 208 Usando classes abs anc sand fina 256 A pilarachave final inpede a sObrepOIG0 ono nnonnnennnnnne 25 ‘A palave-chave final impede a herangavcacccncennnsnennnnnan 256 ‘Usando final com membros de dads Alas Objet. “este do Capito 7 Pacotes ¢Interfacsmnseinininnnininnnninirnnnmnnnnne 260 Prodi isssascicstics mAnC AST Define um past "Encorranopacates € CLASSPATH. Exempla breve de aot Pacotes eo acento a memo Exempla de acesso a pacote Emendendo or memos poteidoe Inport acces Biblioteca de classes Java ica comlda em pots, Inerfaces Implemeatandointeriaces Used efertcis de tetas FFunimenios ds moos odio. a ‘Un exemplo mais pico de wm metodo padi. nreoa Problema da rang rtipl. nore Use mst sttc em uma interface s-sovsevnononn ‘Considrages nai soe os pete e nterace, “este do Capt 8 nn ‘Tratamento de excegdes ierarguia de exceges FFundamens do tratamiento de exc ssn snd ye etch ~ “ Bxemp de exceg sips aaa ‘Consequénias de uma exceg40 nia captada ones ‘Bceghespemitem que we aero nomen Usandovirias nstruges cath Capturand excegoes de sobelsses, locos ty podem ser aniahades [angando uma excegae Relonando uma exec xame mais detathido de Throwable Used fay a Usando throws “Tres recusos das excegiesadiclonadonecenemente Brcoges inter da linger lava. ‘Crna subclones de excep WO Java baseado em faxes. Fluxos de bytes e fluxes de earacteres accanaiasumansiaan 2S ‘Chasse de luxor de bytes. = ‘Cases de us de eaitoes. Fiuxospredefinios. “ sano os fanos de bytes. Lemdpacrirda Go conole uiciundiidinsiin diate Grivando asda do comole Semana a endo ¢ gravandoarqives usando faxos de bytes. 38 ‘Gedo eres em GHD atcantteionnenny A (Geavando em wm argv eae 382 Feehan antoaticamente um argues ana 384 endo ¢ sravando dados bins. ns) a ‘Tente Isto 10-1 Utlitévio de comparagio de arquives. Arquivos de acesoaleatrio.. Used ion basen em earctres danger lava, Entrada do console com o usa de fuxos de carter. Sai do console com o uso de Naxos de carter. Wo de arquivo com ous0 de uxos de arctan ‘Usa om FHEWite nn a ‘Usando um FileReader a ‘Usados enapsuladores de ips da Ingseen a0 “Teste do Capitulo 10. teeters 3 Programagio com Vtias threads wwusnnnnnninsnnnnnnnnns MOD Fundamentos do uso de wii treads. ‘Xcasse Thread ea nerace Runnable. (Chandu 8 “Algamis melhoras simples ‘Tente Isto 11-1 Estendondo Thread. Cian vias threats. vo 7 7 DDeterinande quando una ead teri cvnrwsnensnsnennewncn 318 Proidades das head e a ame 381 3a A nstrgiosyehronize ono 38 Cement ted com eo), wale). moon SP -emplo que usa vat) notify). : siamese SEE Suspendendn reomande «encerando threads 0 ‘Tente Isto 11-2 Use thread principal. Teste do Capito Meee EnumerugSes, autoboxlng, Importagio esiticn € anotagBes.. mumerages. undamentos da enumera...n oo [As eaumeragdes Java Sto ips de ase Maho valus()evalusO4() CConstrutores,métodos, vardeis de insnciae eaumeragies. Das resrgSes importantes, Son Emumeragées beam Enum... Co Tete Iso 12-1 Serr ota por mpd mn secre $09 Auton ot — le Encapuladores de pn au Fundamentos do autobonng.vesessssrsnmnnmnnnnnnninninnonnnnnan 417 Autoboxing © os metodes. a ‘Auloboxing/unboxing acme em expestOE cnn moan AD ‘Aadvertnca ss oe 420 xl 43 44 Sumario Import ett nnn ii Aa Anotagoes(metadados). vnnnrnnennenns ABM ‘Taste do Capilo 12 - I a6 “Tipo genéricos Fandaneno os tos pens. Exemplo simples de gensrico co ‘Genéricos funciona com ios de retertcia. ae ‘Tipos gencticosdferem de acordo com seus argurentes depo oven 484 Classe gendica com dos parimet Os 8 P0489 fom gr ums ese esa. fe 836 “ipos limita. oonsmnnnnnnnnennnnnnsn SOI ase Usandoarpomenios cling nee vnnennsonnenncnn, 40 Caring LiMit$ an anonsniennennnn on 48 Metodos genéscos as ‘Constrtres genic. a8 Inrtacesgonsrics. a8 “Tente Isto 131 Cri wm - 481 “pos bates eigen ernie vo ASS Infertacia de ios com 9 operado osang0 nnn 48 Eras se : "hitman 459 Fars de ambigoidads — 460 Algumas resis dos pearios. fascia ABl aries de ips eo pom se insta, = 461 ‘Restriges aos membros esis. estrioes aos arays penis. “ ast estrigoes a excepoes genes 46 ‘Contiuando sex estuda sate penricon Sandel “Teste do Capt 13s Expresses lambda ¢ referénclas de método... Tivodugso is expresses lamba... Fundumento das expends lambs Interfaces funciona. As expresses lambda em ig0.0. Expresses lambda de loco. Interfaces funcional pendent “Tente Isto 14-1 Passe uma expresso lambda como argumento [Expresses lambda ea captura de varies... [Lance uma exceydo de dentro de uma expresso laa Referéncias de metodo a Referencias amd sieves ic A Referéncias «mods de instil 288 Referéncins de constr. an Interfaces funconas predefiidas. 495 “Teste do Capitulo 14 — 496 Sumério _xill 15. Applets, eventos topleos divers. Aspsctos isos do pe ss Organi cements escnis Jos ait “Argue do apps xquelto de applet completo Inatesoeencemamens So ie. Solita ‘Meéiedo update) Tete Isto 15-1 Ale debian sine Usando ajanela de stats. Passandoparimetrs pars apps. classe APE nnn ‘Tratameno de eventos Modelo de delezagto de events. Eventos fv Fontes de even nat nn 316 Ouvints de eventos S16 (Classes de eventos nuance $16 Interfaces de ovis de eventos vnsnnnvnvnnnnvennnnnnnen 317 ‘Usando o modelo de deegago de evens... = Sooo 18 "Trandocvents co mouree de seus mvimenion. vss S19 Applet de evento dé mouse SIMPL ener, $19) Mats paavens-chave B¥- a ST se Mouificadores transient Ola. snssncnncnnnsennnennnn 329 n6n920f eee sit ann Métados natives. ‘Teste do Capito 15. 16 Introdugio & Swing non (Origen ilosota do desin de Swing. nitrites Componentes contineses. “ Compeneates Contineres Pines do coniine de nivel superior oo CGerenciadores de lite - ‘Um primo programa Swing simples. ii Fens ctpl de Sting iit ia ann Use Baton, ee maaan Trabae com FTextFild Chie tm SCHEKBOE....svvsvnnsnnvnnnnnnnnnnnnnnnone Trae som Sisk. : “Tenteleto 161 Uilitdrie de comparnsSo de arguivs bascado can Sn Use clases intermasannimas ou expesses lambda para trata evenos. Chie um apples Sing. - no = “Teste do Capitulo 16. xv AT Introdulo a JavaFX, Sumario ‘Conccitos Bisco de JavaFX. (pcos Java. 7 AS classes Stage e Scene - Nose grates de cena. Laine = ‘A clase Application eos metodo de cel Yl Iniciando um aplicatvo avaFX 2 squeleto de pleat J2¥AFX we ‘Compilandseexecuando un programa fava A thread do aplicaivo Un contole JavaFX smpes: orl. Usandoboldese eventos Aspectoshiscos de Eee = Introdugao a0 contol de Bota. a Demonsiando otitameto de eventos € both avs Mais sconces JavaFX 7 Checkon.. “Tene bt 17-1 Use oestde indeterminado de Checkbox. LinvVew.. ‘Tented. Tnurodugzo ans fets e wagsformagoes. Efe i “Trasformayoes.. oo emonsiand os efion ernst © quehi mas? “Tete do Capitulo 17 Respostas dos UsteSniminnnninninennnnnninnnninnnannn 1 Capita: Funlamentos da lingsager fv. sac ‘Captao 2:Introduo as tipos de dos © operadores nn ‘Capito 3: Inrugtes de contoe de programa - (Capt 4: Inrdugi is clases, objets metoos ‘Capito 5: Mais tipos de dao € operadores jaaaroan ‘Captlo 6: Veriicagao miauciosa ds métedos¢ classes. Capt: Herangs : (Capito 8: Pacoteseiterfaes ‘Cape 9 Tratamenta de exces. ‘Capito 10: Usundo UO. ‘Capita 11 Programe com vrs thea. ‘Capita 12: Equmeracoes, sncbecn, inpatients. ‘Captlo 13: Tipos genios.. i ‘Capita 14 Expresso lambda reericia de mato, Capitulo 15: Applets, evento epicos vers, (Captuo 16: Ineducao a Swing. ‘Capitulo 17 Inoue a val, Suméio xv 8 Usando coments de documenta da ngage Ja, exception. (inkertDoe| (ink on [ @linkplaa (value) = : @ version Forma geral de un coment de documenting (que javadoe gerbe Fiemplo que uss coments de documento Indice. Ovete deste livro éensinar os Fundamentos da programayao Java, Ele wsa uma sbordagem paseo a pass complementada por vriosexemplos, ees © proje- tos, emo exigeexpergnca prévia em programasio.O livre comesa comosaspectos basic, como a compilagioe execu de wm program lava e, em seeds, disete as palavra-chave, os recursos e a extrtis que Formam @ miclen da inguagem. ‘Yoo’ também encontrar alguns dos recursos mais svangados de Java incisive & programagio com vias threads eos por genicns. ma intodiso 0 fan tmentos de Swing Java conc o liv. AD terminar, woe ter uma compreensS0 ‘lida dos prineipios bisicos da progrimasio ava "Antes de comecarmos.¢ importante mencionar que ese livro€ apenas um po to deporte, Java mais da que apenas os elementos que dafinem a inguagem ~ela também inclu biblioteease ferramenta extensas que ajudam no desenvolvimento de programas. Para ser um programador Java de primeira lina, ¢ preciso dominar também esas Sreas. pss terminarolivro,voo® ft o canhecimentonecessrio para se aprofndar ems todos ox outros aspects do Java A evolugao de Java “Apensalgmasinguagensrfommlaram de mans fandamental essa da Nek psa ic eee dam pores tiga agate {issn claro qo extmes flan da inguagr ava, No €exagers cer {veo lanameno original de Java |Dem 1985 pela Sun Micronytens, Ie. caso Hi pveigts ot perp, Eas rrchght raetheroe Sr mei el Introdugio__xvil ‘Web tomando-a um ambiente atament intrativa, Ness proceso, Java defini um nave padi no design de ingagens de computador. Com o anos, Java continaon crescendo, evoinde ¢ se redefinindo,Diferen- temente de muitas ouraslinguagens, que so lentas na incorporasto de novos re- cuts, Java com fequsacia est na dianteira do desenvolvimento das linguagens de ‘computor. Uma rao paraiso € a cular de inowagio e maanga que foi sriada 0 eu redor. Com resultado, Java pasion por wirasatalizagies ~algomas elai- ‘mente pequenas,outras mais signficativas. ‘A primeira grands atalizach de ava foi a vets 11. Ox rcusos aicions- ‘ds fram mais sigificativos do que se esperaria de uma verso *.1", Por exerplo, Java 11 adicionow muitos elementos de biblioteca, redefiniy a rancira come os ‘eventos so tata e reconfiguro varios recurso dablioteca | )original ‘A prévima verso de grande porte foi Java 2, em queo 2 indica “segunda gern- 50". Acriagio de Ja 2 foi um eveno divisor de gus, mareando oeomege da “era ‘modem’ da linguagem. A primeira versio de Java 2 taza o mimeo 12. Iso pode parecer estranho, mas ozerou porgue,eriginalment, ole se refevia 20 mimeo de ‘verso interno das biblionens Sav: mais tarde foi genealizado para se erie ver- 30 incr, Em Java 2, Sim rium novo pacote par o produ Sava, chamando-o de J2SE Java 2 Platform Standard Edition), os nimeros de versio comecaram a seraplicados a esse prin, ‘A peimna aualizasto de Java foi J2SE 1.3. Essa verso fia primeira grande stualizao de Java 2 crginl. Ela aumentou 3 funcionaidade existent e“integrou melhor” o ambiente de desenvolvimento. O laamento de J2SE 14 melhorou ainda ‘maisa inguagem. Esa verso continu viios recursos novos importates, inclusive excegdes encadcadss, HO (inputourpot, ou enruafsalda) bascada em cans © a palava-chave asert. O langamento de J2SE S criow nada menos do que um segunda revolugdo Java. Ao conririo da tora das atalizagies anteriores, que oferece melhorias ‘importantes mis increments, 2SE 5 hasicamente expands « escapo,o poder € 0 lance da linguagem. Para der wna ideia da magnitude das mudanjas caused por TSE 5, eis uma lista doses prncipais recursos nova queso discus neste vo: © Tipo Genéricos © Aatoboxinghanboxing + Bnumeragoes + © ago for methorado, de estilo “foreach” + Angumentos em tamanhovarvel (varargs) + Imnportagio exten + Anotagtes ssa ndo & uma lista de pequenos ajustes ou atualizages incrementais (Cada item da lista representa um grande aeréscimo a inguagem Java. Alguns, como os tipos genéricos, lage for melhorado e os varargs, introduziram novos clementos de sintaxe. Outros, como o autcboxing eo autounboxing,aliraram a vill Introdugo scmintca ds linguagem. As snotagdes adicionaram uma dimensiointeramente nova A programasio, A importincia desses noves recursos se reflete no uso do nimero de verso °5°, O prénimo nimero de verse de Java normalments tera sido 13. Noentanto, = novos recursos eram th importantes que a passage de 14 para 1.3 no paocia ox pressara magnitude da mudanga. A Sun eno prefer aumentar o nimero da versio para 5 como uma maneira de enftizar que um evento maior eta ccorrendo, ea fot nomeada como 12SE Se «kit da desenvalvedor foi chamtada de IDK $, Porc, para mantorcoeréncia,aSun decid usar 1S como sou nimero de verso interna {que também &chamado de mime de versdo do desemolvedor. OS” em DSE 5 € shamado de miimere de verado do prodato. 'A versio seguinte de Java foi chamada de Java SE.6.¢, ovamene, a Sun de- cidia mudae nome da plataforma. Princno, 0 “2” foi removido, ea platforms pssou ater o nome Jai SE; 0 nome ocial do produ ficou fase Platform, Stan ‘dard Edition 6, enguamto 0 kit do desenvolveder Tava ficou SDK 6, Como no J2SE. 5,06 em Java SE éo:nimero de versio do produto. O ximero inten da versto do ‘desenvotvedor €1.6. Tiva SE 6 tome como base J2SE 5, alisionando melhorias increments. Fla io adicionou mires recursos linguagem Java peopramente dita, mas aperfei- {901 a ibliotecas de API, adiciono iiriospacotes ovoseafereceu melhoas no tempo de execugio. Também pussow po vrits atualizages durante seu longo (em termos de Jaa) cielo de vida, com muitos upgrades duante o percurso. Em ger, Java SE 6 servi para sliificar ainda mais os avangos citos pelo J2SE 5 'A peGrita versio de Java fol chamada de Java SE.7, com o kit do deseavol vedo Java chamado de IDK 7. © adimero a versio intema € 1.7. Java SE7 foi primeira grande versio de Tava desde que a Sun Microsystems foi adguirda pela (Oracle. Fla continha muitos recursos noves, inclusive acréscimos sigaificativos & Tinguagem e ts biblitccas de APL. Alguns dos recursos mais importantes adicion 1d por Java SE 7 foram os desenvolvidos como pate do Project Coin. O objetivo td Project Coin era identifica vrias poquenasaleraies feiss ma linguager qu Seriam incorporadss 20 JDK 7, que incluem © Objeto Steing pode controlar una insrugo switch, © Litera intitosbinsrios. © Sublinhados ea liters numérico. + Instugio try expandida,chamadatry-with-resourcer, que dé suport 20 ge renciamemt automstien de recures, © Inferncia de tipos (via operadorfosango) na constragio de uma instincia ge- tea. © Tratamento de excegGes melhorado, em que duas ou mais excegSes podem ser eapturadss pola mesma inswucto eateh (multcatch),e melhor verticagio de tipo pan exoxgdes questo relancadas Come voeé pode ver. ainda que os recursos do Project Coin tesham sido consi- derados poquenssalteragdesnalinguagem, seus beneficis foram muito maones do Inrodugso_—_ xix «que oadjtivo “pequenas” suger. Em especial, a instrughotry-with-zesources feta ‘rofundumente« maneira como uma grande quanidade de egos € esr. Java SE8 ‘A versio mais recente de Java se chama Java SE'8, com o kit do desemolvedor Java ‘hamado de IDK 8. Onimero da versio itera é 1,8 JDK Srepresenta umn upgrade ‘state sigificaivo na linguagem Java devido incluso de um novo recurso de rane alcance: a expresdo lambda. O impacto das expresses lamba ser profun- to, alterando a mancira como as solugées de programagdo sto concebdas¢ como © ego Java 6 eseio. Nesse proceso, as eypresses Tamds podem simplificat ‘reduit 0 volume de ciigo-fote necesito para eriagio de certasesruturas. A inclusdo das expressoes lambda também gera um nove opcrador >) € um novo ‘lemento de sntaeasrem adicionados&lingagem. As expresses lambda sjudamn sc gu oie no ngage igo an pera es ‘Além das expresses lambda, JDK & adiciona muitos outros recursos novos Jmportantes. Por exemplo, a paris de JDK ¢ possivel defini uma implement ‘0 pao de um mésodo especiticado por uma interfce. JDK 8 também inca © suporte a JavaFX, o novo framework de GUI da linguagem Java. E esperado que tem breve JavaFX descmpenhe um papel importante em quae todos os aplialivos Java, scabando por substitu Swing na naira dos projetos bascados em GUL Em ‘dima andtse, Java SE 8 é uma versio importante que expande profundamente os recursos da inguage eaters a mancira come o edi Jv €esrito, Sens efits ‘eri sentidos em todo 9 universo Java durante muitos anos, O material dst livro Tot atalizad para Java SE, com muitos recursos, atualizagies aceéScimon novos indica em toda a sua extenso, Como este livro esta organizado Ee vo apesent um nivel de ifcldadecescenc cm qe ena ego tem como tase uancior. Cals um don seus 17 caps discus um expect da ngage ine Ronin ede piqued wirebond pecan gaorlinpcie eld got, Principais habilidades e conceitos Cada capitlo camera cam tm conjunto de abildades que wood pronders. com um teste que pormit testa se chscimento. As respos- tas esto no Apendice A, Pergunte ao especialista Encomrun-s esaladas no ivr css expec chamades Pergune a expeci- lista. las contém informasses acionais ou comentarios interessantes sobre ut ‘pico © usam um formate de Perguna/Resposts, 2X _Introdugao Tente isto Cada capilo conten umn ot mais clementos Fete isto sto projtos que mostra como aplicar o que vc® estéaprendenda, Em muitos casos, so exemplos reais que ‘eed poder usar com pono de pata para seus prprios programs. Nao é preciso experiéncia prévia em programagao Ewe lvo no exgeoxperitcia peévn em pogramagto. Logo, vocé pode uo ‘mesmo se mina program. Se iver agua experiencia anterior em program (de. podecéavangar umn powc mas ripide. Pore embne-e de qu Jove dere Sim isos aspectos importantes de utes lingoagens de programagin populares tssencil nib ir concunbe apessadas, pt, a meno prs porate experienc ar itr cuidaosae recomend, Software necessat Para compilar execute todos os programas dest liv, vos precisa do dim kit ‘do deservolvedor Java JDK. Java Developers Kit) da Oracle, que, quando est texto {oiexeio, rio IDK 8, Esse € 0 IDK de lava SE Intra para cbtenso do JDK. Java so dadas 00 Capitola 1 ‘Se voe®estver usando uma versto anterior de Java, também poderd usar este Tivo, mas no poder compile execuaros programas que usr 0s recursos mals recentes da linguagem, Nao esqueca: o cédigo esta na Web Lembre-se de que o fdigo-fte de tados as exemplos © projetos deste Livro ext Aisponivel em www grupoa.com br. Cadastre-se gratuitamente no site, encanre © ‘acctse pigins do livre por meio do campo de busca clique emt “Conteido Online” prs fazer download dos egos. Agradecimento especial Fago um agadecimeno especial # Damy Coward, editor teico desta io Dany waalhou cm nits de meus ioe sus colo, iki sugstes seme pre Ema le me vlay mtomprcinion Capitulo 1 Fundamentos da linguagem Java 2 eva para inciantes Principals habilidades e conceltos © Conecer historia ea Filosofia de Java © Entendler a contibuigo da linguagem para a Internet © Entender a importineia do bytecode © Conhecero jargao Java © Entender os prineipios bésicos da programagao orientada a objetos © Criar, compilare executar um programa Java simples © Usa var © Usaras instrugdes de controle if efor * Criarblocos de cédigo. + Entender como as instrugbes sto posicionadas, recuadase finalizadas * Saberas palavras-chave Java Entender as regras dos identificadores Java svango da Intemet e ds World Wide Web rformuloa a computagdo. Ants da Web « panorama ciberdticn era dominado por PCs isclados. Hoje, quse o- dos os computadores esti conectados & ateret. A prépria tne fo transfor ‘mada ~originalmente, oferecia uma manera comveniente de compartilhar arquivos © informasoes: hoje, ¢ um universe de computagio vaso e distibuide. Com essas ‘danas, surgi uma nova manera de programa: Jaa, Java € a principal inguagem da Inernet, mas mais Jo que is0. Ela revo cionou a programagio, nudando a maneira de pensarmos tanto sobre a forma quanto sobre afngdo de um programs. Atualmene, rum programadorprofisional exige ' abildade de programa em Java, tal 6 sua impertncia, No decorter dese Ivo, ‘voed aprendet ts asides necessris para domi essa habilidade. (O ebjetivo deste capitulo ¢apresenté-lo a linguagem Java inclusive i sua his- ‘Gra, ilosoia de design © vros de seus recursos mais importantes. Sem divi, ‘mais diffe no aprenizado de uma lingigem de programario 60 fata de nenhum clemento exist isoladamente, Os componeates da linguagem trabalhara em con junto uns com os outres,e ssa interatvidade tem destaque especial em Java. Na ‘verdade, ile discutir um aspoeto de Java sem envelverouteos. Para ajudar& resolver esse problema, o Capitulo I fornece um resumo de vrios recurs Java, entrees a forma geral de um programa Java algumas estuturas bisicas de controle 0s operadores. Ele nfo entra em detalhes, mas se concentra nos conecitos comuns ‘qualquer programa tava Capitulo 4 Fundamentos da linguagem Java 3 Origem da linguagem Java A inovagio nas Tinguagens de computador éimpulsonad por dois faxes: melas stare de proramarc ltragies o ambient de computagio. Java nia ¢ excess Conseuia pan do ico legado herdaio das linguages Ce Ce, Jaa adciona ‘melorias eecursos que elle oestado sal da ste de programas Respondend 8 asenso do ambiente online, aTinguagem Java oferece recursos que omizam a rogramagio pars uma aqutetirsaltamentedisida ava fol conecbida or Jamcs Gosling, Patick Naughton, Chris Wan Ea Franke Mike Sheridan na Sun Micrsysen, em 1991. No inco, a linguogem se hata “Oak, mas fi renomeaa com “Java” en 1995. Sarpreendentement, a ‘notvago oil para crigo de Tara ndo fa Intmet A pincpal oivagio {oa necevsidade de uma lingoagem indspendenc de plataforma que pudesee set ‘sam crag de software emi em vos disposos eens dome cos, como tomas, fomos de micr-ondss ¢couboles remotes, Como ea de 5¢ sports tips de CPUs sto usados come controladores. O problems cra que {on pce) a mato ds lingungens eva prolapse compa pra am de noespecfic, Por exerpo,easiere Cos "Enbora foie pssiel compl um programa C+ pra qus to po dé CPU, ‘sso queria um comyplador C++ complet destindo sums CPU expecta. O pro ems, no encanta, ¢quc eave demorado cri compares. Ei na emai de circ uns slugo mel, Gosling ¢ ous raalharan em uma lnguage com onabilidade ote patformas que pss prods cigo pare ser cxcitado cm ‘ins CPUs com ambints cere, Ese esfogoacabo evando ciao de Jv ‘Mais ov menos ma eposaem ue os dues de Java estar endo xb sos sams um esundo flor muito importane que deserpenhara papel cri 0 Faro da lingoagem.E claro que ea segunda fogs fo World Wide Web, Se 4 Web no etveiae se formando que ao smo tempo em que Java stv send ‘implementa aver la continua send una lingua ci orem obscura para 2 programagin de wenstioselernicosdoméstices, No entanio, como srgimento 4a Web, Java fs impalsonada para intra do design das nguagens de comps tedor, argue « Wb ame preciso de programas pores ‘Amara dos progrrtaores arene ceo em sas carreins que a ei de programas pores a0 mesmo tempo, desejivel eilsra. Embora a ata por ‘unt mancira deer programas ficients ¢ pores (independcaes da platforms) ‘je quae to antiga quanto propia diciplina de programas cla fi denads con seguro plano devidoa problemas mais ugentes. No enn, com 0 advento da In tect da Web owe problema da praise nensificn. Afra Ineret {compost por um univer dinerifeadoedstsibldopovoado por muitos ios de omputaores, sistemas operaionase CPUs. © que tita sido um problema iritante porén de bana priordade foro sma ncesidad urgent, Peto de 1953 fico vio pars ox membros da equips de design de Java que, com fequéncia.os problemas de porabilidade encontades ma eriagio deeiigo para congbaoresembutdestambem so encontads quando tentamos tar ego par a Inlet. ssa percep fe 0 foc de Fava maar os "enue clctrnicos domestics para a programa na aterct Log, embora 4 {agatha iil tena sido grad pelo deejs por ia imguagem de programasso 4 eva para inciantes independente da argutetra fo a Intemet que acabou levando 80 sucesso em larga excl de fava Qual a relagdio entre Java, Ce C++? Sava ext dretamenerelaionada aC ¢ C+. la hea a sntane ds Knguagem C. Seu modo de objetos¢adaplado de C+. Orelaionsment de ava corn Ce Ch mportant or vrs rates. Em princi Inga muitos pogramadoresconhssem assntace iGo. o facia um programador CiC+« aprender Java e, da mesa forma um programadoe Java aprender OC "Em segundo haga, os projctinas o “riventaram rods” ls einara sin- da mais um paragon de pogramagio 6 amonte hem sce, A era madera tha programagio comeou cam C:Passou para C++ e depos para Joa, Ao hea ¢ te bea nese rcs Iga, va Forece tm aint de permis pero € logicamentecocrnt pe sproveta 0 melhor da pasado eadiciona nanos rciros ‘quero polo ambiente online aver o mais importante sea gus, devido ae semelhansas C, Cree Java dfinem unt erst conceit comm pas 0 pro rumadorproissonal. Os programadore ao cvontam grandes diferngss quando passa dé ums ingger para ota, (Urn cs Gloofias de design centrist om C quanta em Ca de ue 0 programador eats no comand! ava trem hea ss loin, Excel pls ex tigoes imports pelo ambicate da Interne, linguagem dao programadorcontle tot Se vod progromar hem, sev programas rfletito ito. Se progrannar mal, cles am elt, Ex outrespaevras, Java no 6 ingen prov de falas. E uma Fngeagem para pogramacoresprofsioni. ‘A linguagem ava tem oto tribute comum com C ¢ Co foi prota, ‘estado aprimorada por programadresiseridosno mercado de aba. fama sggem haseuda nas neces e experincion das pesto ue a poeta. "Nao ha mancira melhor de prodcr ua inguagem de programasaoprotsioal de ala qualidade vido is semelhangas entre Java C+, principalmente seu suport progre smagio orion a bjeton &tenlador pensar en Java como a verdo de C++ para Slnterne”- No ent, nso sera um ero Java em deren rican lesieas ‘ignifctvas.Emora tena io inflansiads por C+, ns uma verso melborada ‘wa Tinguager. Por exemplo, no &compativel com verdes anteriores oa urs dle Cs, Claro an semethangs com Css sits me v0 for pga dle C+, va se sentir ea cass com Java, Ouro posto: ava nao foi pojetada para suhaioitC4 oipenjetda pare esolverdetoranad conned problemas; + {oi projet para reaver um conju de problems diferente Ela sid coexist ‘ho por itor a Qual a relacao entre Java e C#? Alguns anos aps criagao de Java, a Microsoft desenvolve a linguagem CH. Isso € importante, porque CF est inimamenterelacionada a Java. Na veedade, muitos dos recurs C# tm equivalentesdirtos em va. Tanto Java quanto C# compartitham 1 mesma sintaxe geal de estilo C+, dio suport a programagio distrbuidae ul am o mesmo modelo de objetos. E claro que hi diferensas entre lava © C8, mas & Capitulo 1 Fundamentos dalinguagem Java 5 paréncia” geal dessus linguagens€ muito semethante Se v8 conhece C4 srt ppriclarmente el aprender Java. Da mesma forma, se estver em seus plas usar CC, seu conhecimente de Jai ser til ‘Dada a semethanga ene as duaslinguagens seria natural alguém perguntar: CH suber’ Java?” A resposta & nto. As linguagens Java © C# foram oimizadas para dois pos de ambiente de computa diferentes, Da mesma forma que C++€ Java coexist por muito tempo, o mesmo corres com Che Tava, Contribuigdes da linguagem Java para a Internet ‘A Internet judou aimpulsioner Java par a diantira da programas e, por sua vez, Java tove umn efeitopeofundo sobre Tnverne, Am de simplificar a programagio al na Web, cla inoveu com um tipe de programa de rede chamad applet, que mni- ‘du a mancira do mundo online pensar cm conte, Java tam resolve alguns ‘dos problemas mais complicados associados Inte: porabilidade e segurangn. Exuminaremos mais detalhadament cada um dees Applets Java ‘Um applet ¢ um ipo especial de programa Java projet para ser ransmitido pola Interne exceutadoautomaticamente por um navegador Web compativel com Java. ‘Alm dso, ele baixado sob demanda, sem ncnhuma inieragio com ousuisi. Seo ‘sudo clcarem um link que contém um applet, esse ser automaticamentebalxido « exccutado no navegador. Os applets si projtadas como programas pequcnos. ‘Nommalmente, so usados para exibirdadosfornecios plo server, rat entradas ‘do usuério ou forever fungbes simples, como uma ealuladora de empéstinos que «6 execu localmente em ver deo Servidor. Bisicamente, os spples permitem ‘qe uma funcionaldade sea movida do servidor para o lente ‘A igi do applet mudou « programacio na Intemct porque expands uni- verso de objets que podem se mover livemente no ciberespgo, Em sera hi das arandes categorias de cbjeos que so transmitdas ene o servidor eo cliente: infor- ‘agdes passvas e programas atves. dinmicos. Por exemple, quando voc$ I seus ‘emails, etd viswlizando dados passivos, Até mesmo quando baixa tm programa, seu céigo ainda slo apenas dao passivos a vooe executé-o, Por out lado, 0 spplet um programa didmico de execugae automatic, Esse tipo de programa én agente aivo no computader client, mas ¢inicializado pelo servidor. ‘que esses programas dinimicns de rede so tio deseveis, eles também ‘@m que evtar problemas sérios nas eas de seguranga e portabiidade E claro que lum progrima que ¢ baixado e executado aotomaticamente no computador cliente dove ser impo de causa datos. Ele tam deve poder se excovtado em vrios ambientes diferentes e em sistemas operacionas dstntos. Como voce ver, Java resolvou esses problemas de manna mite eft elegant, Examinremoscos dois problemas com mais detalhes. Seguranca Sempre que baxamos um programs “normal” estamos os atiscando,porgue © «cio baixao pode comer vit, eva de Trot ou OUUO cio danoso. A pate 6 eva para inciantes ais importante do problema éo fato de que wm igo maliciosa pode causar ‘dano, i que ganhou aeess0 nie autorizado a recursos do sistema, Por exemplo, tum virus pode coletarinformayées prvadas, como nimeros de cartao de crédito, saldos de conta bancéra senhas,pesquisande o contcido do sistema local de ar- |quivos do computador. Pars Java permitir que o appt fosseseguramente baixado « executado no computador client, era necessiri impedir que ce iniciasse esse tipo de aaque. ‘A linguagem conseguit formecer essa profes confinando o applet a0 amt bionte d exceugto lava enagand acess a otras partes do computador (Vacé ver ‘somo sso € feito em breve) Poder baixar applets com acerteza de que nerihum dane ‘er caunado ede que a seguranga no serévilada € considerado por muitos © as ecto mais neva em Ja Portabilidade A poraiade 6umaspecto moran da net, png mitosis com inlets tii Gr tte leone Goer toe Se foe ota leer pina quale ripe Camano ec Sct erage hve gma mania de perigee ogra one excita i diay Geen ecg, am dicate plat ge pole elannteteoach pol gists veoeials CPUs hiseen peas Tego cect ern Nin richer cet versace fers Corps ents. O mare cfg tre nce wm te an cot fndoes. Pont, gum meio de gear edig excel priv er cea Gamo vee vert en freve esto mesons gue jude ane sera tami ura ger poral O segredo da linguagem Java: o bytecode (0 segtedo respensivel por permite que Java resolva os problemas de suranga & povtabilidade ue acabanos de descrever € nada do compilaor Siva no sero {go executivel. Em vez diss, bytecode, O bytecode ¢ um conjunto de instru al- tamene otmizade projtado para sr executado pelo sistema do tempo de execaséo Java, que se chama Magia Viral Java GVM, Java Virtual Machine), Na verde, ‘VM original foi projtada como um interpretador de bytecode, Isso pode parecer novidade porgue miss linguagens modernas so projtadas para sr compiladas para eiigo exeeutiveldevido a preoeupagies de desempenbo. No entano, 0 fao de © programa Java ser executado pela JVM ajuda a resolver os prineipais problemas sstociados «programas baseados na Web, Vejamos porque. (Converter uim programa Java em bytecode facilta muito a exccugio de um programa em uma grande varedade de ambientes, porque s6 2 JVM tem que set ‘mplementada para eadaplataforma, Un ver que pcote de tempo de execugio tstiver presente em um determinado sistema, qualquer programa Java poderd ser exceutado nel. Lembre-e,embora os detalhes da JVM sejam diferentes de uma pla- taforma para outa, xs entendem 0 mesmo bytecode Java. Se um programa Java Fosse compilado para ego native, deveriam existe diferentes verses do mesine Capitulo 1 Fundamentos dalinguagem Java 7 programa para cada tipo de CPU conectad 8 Intemet. claro que essa nfo € uma rolugio visvel Logo, + execasio de bytecode pela JVM é a mancira ras iil de «rir perms reaieote pots ‘0 fato de um programa Java scr exccutdo pela JVM também ajuda a torné~ slo seguro. J que a VM ests n0 conte, ela pode rete programa eimpedilo de zen efeitos clara frac ssema segranga amb € aumentad por ets estrigGes exists na lingua Ja, ‘Quand um peograma¢imterpretad, geralment ele é executado de modo mais temo do que o mesmo programa seado exceutado quando compiado pars ciigo exccutivel, No entanto er ava, adiferenga ene o dos nn € to grande. Ji que > bytecode fo‘ alamenteovimizado, seu uo permite que aJVM exceute programs de ‘maneira mais pia do que o esperado ‘Embora ava tena so projet como uma inguagem interpreta, ot nada gue impega a compilagao dinmica de bytecode para céidigo nati visando ‘a melhoria do devempeaho. Portanto, a tesnologia HotSpot foi intexuzida pouco tempo aps o langamento inca dalinguagem. O HosSpoe fornece um compar {ustin-time (IT) par bytecode. Quando wn compilador YT fa pate da VM, par tesde bytecode selecionadas 0 empilads em tempo real fragmento a fragmento « sob demanda para codigo executive. E importante entender que nao ¢ pratico ompilar um programa Java into para cédigo executive de uma x6 ver porgue Sava executa vérias veriffcagBes que 96 podem ser fctas no tempo de execu, Em yee disso, um compilador ITT compila cédigo quando necessrio, durante & cxccugio, Mas nem todas a sequéncias de bytecode so compiladis~ 56 a8 que tenelciarto da compigto. O eddigo restante €simplexment interpreta, Mesino asim, a abordagem just-in-time gera uma methora signiicativa no desempenho, ‘ALé mesmo quando a compilao dindmica €aplicada ao bytecode, os reuses de porabilidadec segurana continuan apliciveis, porgue a JVM sinda est ae co- ‘nando do ambiente de execucho. Pergunte ao especialista Our flar dum tipo especial de prograra Java charade serve De train? FR Um serlet Gum program pequennexzcudo a server Da mesma forma gu applets etndem dinamicament a fencioaldade de um navepager Web, os evs ‘Merde dnumicuete x enconlsade do servider Web, Deverion entender ge, esto endo ts supe so pens uta mete da ua leer d Pouco tempo ps anaes incl de av, fos Givi ue Hague adn seta id ad do seid O esa fo 9 ets, Lage com oadseta dose ‘es Javase esende pelos is laos de eoexto cierto igo servlets no faa prte do escopo deste guia do nine ees so algo que vee ‘al querer concer melhor ao avanear a programa av, (Una discuss dos ‘eves pode ser encoatrad nt me tow The Complete Reference pobiado els One PresMeGr-L) 8 Java para inciantes 0 jargao Java "Nenhma viso gral de Java esté completa sem um exame de su jaro. Emibor as fogas bisicas que prcisavam da invengto Java tenham sido a potabilidadec a se- _guranga,outosfzores desempenbaram um papel imporante na moldsgem da forma final da inguagem. As consieragGis-chave fram reunidas pola equipe de design Javana lista de paves a seguir Simples “a tor um cnjanto do reereesconcboe coaso que a toma fae 6 aprender 0 usa Segura ix omece um melo seguro de ria apiosthos de nteet, Portavel (0s programas Joa podem ser xecutades er qusiquar ambient parse gus nower um sistema ce tmp ce evecugso Jaa otiontaaa a objotos Jaa nerpora.a modems loco de pragramagéo ovortads & ets. Robusta Je incentva a programagéo sem eros por sr frtemente ipa © exeruar erica de trp de execu, Vatias threads Jae orsco suport ite aco 8 prgamscso com vtos ‘treads Neutra quanto & arqultetura Joa no tom ress cam ane determina magus oo arqtatura do sstoma opracorl. Interpretada ove 4 suporteaecigo para vias pattormas com o uso do ipnecode Ate desempenno CO yrecoae Jove ¢ attamerteatimizado par eaten de (cease de exact. Distibuiaa Jove projetedsvisance 0 anoientsastroulce da irtrret Dinamiea 0s programas Jaa eatagam grandes quaiidades do Informageas do tipo quo 50 usadas ra vricactoo esolucs0 de acosso a abot no tmpo do swecue. Pergunte ao especialista Porque fol necessirioerar uma nova linguagem de programagio como Java ‘para resolver s prublemas de portaildadeeseguranca? Uma Hinge camo ‘C+ nio poderia ser adaptada? Em outras palavra. nb podera ser eriado um compiladr Ce que erase bytecide? RR: Eimhorfosse pose wm compiladr C+ gear a semethanc x bytecode em ve ecignenectiel, Crem recursos qe desenorsju seu so pa acrigno de programas da Internet 0 mas important dels € supe 2 patios. Um pomtre ‘oendeego de algum ebetoarmazceade oa mea Como uso de um pons, seta possi! sess ecuos fra do programa. o que sulla em un ali segura, van di spore ponies, elimina ese problema Capitulo 1 Fundamentos dalinguagem Java 9 Programagao orientada a objetos ‘A progsamagio orienta objets (OOP, vbject-oriented programming) é a ess orcniada a objeto €inseparivel da linguagem, todos os programas Java st, pelo menos até cero pono, ercntaos objeto. Devido& Simportincia da OOP pa lava, € dil entendermos seus prinefpios isicos ates de «screver até mesmo un programa Java simples Pstrionmente neste livo, voc ved como colar ees concetos em pitca, ‘A.OOD ¢ uma mancira podcrosa de abordar a tarefa de programa. AS me~ todoogias de programagio mudaram drasticamente desde a invengio do comput or, rineipaliente pars acomedar a erescenie complexe do programas, Por texemplo, uando os compatadres foram invemtados, a programsagio era feta pela tivo das instrogds bindrias da méquina com o uso do paine! frontal do compu- ‘ador. Comtanio que os programas ivessem apenas algumas entens de instughes, ca abordagem funcionava.A medida que os programas creseram. alinguagem de ‘montage fo invemada para qu oprogramador puesse lidar com programas aio~ reve cla ver mais complevos, usando representaghessimbolis ds isrughes de _mviquina, Como os programas Gontinuaram a rece, fram insides inguazens dz alto nivel que davam ao programadoe mais ferameaas par lidar com acomple- sida. E laro gue a primeira linguagem amplamente dsseminada foi FORTRAN, Embora FORTRAN foe uma primeira etapa ber impressonante, nto € uma in- tmagem qe encorae a riogo de programas laos fces de entender. ‘Os anos 1960 deram oigem programa estrada, Esse ¢0 modo encort- {ad por linguagens como Cc Pascal uso de linguagens extrutradasorou posse rir mais faciimeate programas de complexdade mxerala. As iguagens exeut- ras so carateriads pr su suport a sub-atnas automa, varies lcs © cstruuras de controle sfisicadas independents de COTO. Embora sean uma f= ‘amentapoderosa a cas lcangam su mite quando um proeofca grande demas. ‘Considete io: cada maron no desenvolvimento da programago, ences © ferramentas cram cradas pata permit qe © programadorlidasse com a resent complexidade. A cada capa do petcuro, anova abordagem pega os melhores le~ ‘entos dos métns anteriores fava avangos. Antes da invengio da OOP, muitos jets estavam prto do pont (ou excedendo-o) em que a aburdagen eturada no funsionava mais, Os meds orienta a objeton foram eras para ajuda os rogramadores a utrapassa 85a 'A programacio orentadn a objets pegou as methores iiss da programagson «strutura € combines cam vrs coceites novos O resulta fo una manera ier de organizar um prgrara. De un modo mais geal, um programa pode set ‘organizado de uma erzedous mancirs: a parr desu ego (o gus ex ocomcno) tat a partir de seus dads (o ue est send afetao). Com o uso somente da prosri~ ‘ago extra, sormalmente os programas so organiza part do digo [Es abordagcm pode scr considera como" digo atuando sabre os dados (0s programas orientacos objets fancionam 20 contro. Sio ergaizados ‘panic di das, com o seguinte pineipio-chave: “dads contand 0 acess 30 sfgo", Em una lingvagem orientada a objets, we? define os dados eas rtinas que podem ar sobre cles. Lago, um tipo de dado define precsamente que ipo de operas pode se aplicado a esse dado. 10 Jova para inciantes ara dar suporte an prineipis da programaso orienta a abctos, todas as Tinguageos OOP, inclusive Java km és caracteristias em comm: encapsulamen ‘o,polimorfsmo eheranga Exarinemos cada uma. Encapsulamento O encapnlamento €or sansa de programas qu vacua o cig sd dor qa cle trata eso ana on ds seguro cota interference ma lingo eter, Er una Kingungem erentada a abjeton o cigoe os dadon podem ser ‘incl de tl fori qo ua ala prea ealGnoma ej cra, Den xia, {sto todo oeddigo eos dadosncersdrion Quando ocigo cor das sto vince. tos desea forma um bjt erin. Em out playa, tn objet ocspvo vedi spore a encapslamento. Dentro de um eto, «eign, ox do ou ribo poem ser priv dense bet on pablicor O cfigoow a dadosprvados 6 so conidos acess pot cata pat do objet, Io & efige wa dade pvadoe ni pode er cesados fru pre do programa que exis fora do bjt, Quo eign ox os dadoe So pblice, outs pres do programa poder aes los meso que ctu def "on dento dem objeto, Nornalmet panes pblens eum ober toads pts frmecer tn nee conocer os eemenoa pve do oben, ‘Awaide bases de encpmlamenio de ave éa clase, Erbora clase ja examinads com mais dtles ponteiomente nee lio a breve discuss egur fertdi agora Una east dfie a forma de um objet, Ela especifics tanto ot dios quarts 0 cdigo que pera ache cles va ust a expeifiordo de classe percent oveon. Ox objetor so insneias de wma lms. Logo ua clase € tasicament um cnjuto de panos que especiica como consis bit ‘cigo cox dados que conser ta clase so chamados de membre da ciate. Eapeteamene, or adn definidon pela clase to chamaos de varéels imenbro os varivets de instncia. Os egos ve operat sobre exe dads si Ctaados de métador membre ou apenas melods, odo €o ero em Jaa pars tran ab-atna, Se vod eonhece is, alve ahd ser que equ um prograre dor ov cama de metodo, um ogra CYC cha de un, Polimorfismo. Polimorfismo (do prego, “muita formas") € a qualidade que permite que ur inter face ucesc umaclasse gerade agies. ago especifica¢determinads pela nature ‘nats da stuagdo. Un exemplo simples de polimorfisma & encortad no volante de lum automdve. O volante (so & a imerfae) & 0 mesmo ao imporando 0 ipo de ‘mecanisina de dresio usado, Ov sea, o volante funciona da mesma forma se set caro tem diregdo manual. iro hidréulca ou direg de cremalhcira. Pertanto, se ‘ocd souber como operero volante, poder digit qualquer ip de camo, ‘0 mesmo prinepio mbém pode set aplicado a programagto, Por exeimplo, considere uma pila (que ¢ uma lista “primero a entrar dims a sai”) Vo poderia. terum programa que precsass de tS tipos de plhas diferentes, Uma pila € sada para valovos intros, una para valores de ponto Mutuante © uma pars earacteres. esse caso, algoritine que implementa cad pilha ¢ o mesmo, ainda que dados armazenados seam diferentes. Em uma liguagem nao orentada a objtos, vod se- Capitulo 1 Fundamentos da linguagem Java 41. ‘ia obrigado a cra sconjantos de ins de pis lifeentes, com cada conjunto ‘sano um nome: No cna devo opines, em ava vo pode ra uh conjnto gerade ona de plas ie fncione ets rs ite ep as, Desa Forma, sober como war una pla, poder! wu fdas. Garsiment, oconeito de plimorfismo representa pla expres “uma interfice vrios meioos". Ou sa € possvelproetar uma imterface enéica para tm erp de ative relaconadan.O pinorfame suds rere compli As permitind qc a mesma nrtace ss usd ara eapificaruma case neva de agda Etre do compiladoe season a ago (so & moda) expecta conere ‘id situagao, Voc programa no previa fazer ens slegso mansaimente, $6 tem qe lembrar da interface gral will. Heranca enna £0 proces pel qua um ojo pce agi popieaes de out oh jan diem pon i per a ones de ceca Hambrgcn. So vod ea bon, gdb pee doce tecimets pols berneech can een Ieriguivas (sto 6tp-down. Per xempl, una mags Red Delco fx parte dt Clap mopar porn vr apart dacas ra, uc fea sob clase nai linet a he lent pacer qualia cnet, tivo ee) ‘evlglamecias unbin w piced recto fs Alle desputes lane fre arctan opectias rales, dvs) qo a ning ator amen clase map define a ads eapctas dura ask ese tm rors, oil) Pos er, un ag Red Delius erin Fas de toa hse precelere«v dtins qelaes qu tom Sem ouso de hcrangin, cada cjeto ers qu defini explant tn 2 sone src. Corn os da heanga im hs tem qo din sgl deseo tora ic den de chs. Hep ear ses tite gra de sel Leg tec dong spa oes eran tac pete cnicas Ba pe Obtendo o Java Development Kit ‘Agora que a base teria de Java foi explicaa,€ hora de comegar a esereverpro- sramas Java. No entanto, antes de voeé poder compilarcexccuta esses programas, precisa tro Java Developmeat Kit UDK) instalado em scu computador. 0 JDK est Aisponivelgratftamenie na Oracle. Quando ese texo fo escrito, a versio corente do JDK era a8, Essa €a verso usa poo Ja SE (SE 6 a abreviago de Standard Edition) 14 que © JDK 8 contém muitos recursos novos que mo ste suportades em versdes anteriores do Java, é necessério usar essa verso (ou uma posterior) pat ‘ompilar¢ executar programas deste Tito, Se vot estiver usando una vets anterior, programas que tverem os novos recursos no sero compilados ‘0 IDK pode ser baixado de wwmoracle.com/technetwerk/javajavaseldo- wnloads/indexchiml, Simplesments aesse a pigna c sga as instractes para tipo de computador que voc? fem, Apos te istalado 0 IDK, voce poder compilar & «execu programas, O SDK fornece dos programas principais.O primeira €o jayne, que € 0 compilador Java. O segundo ¢o Java, que ¢ 0 intrprtadoe padtio de Java, também chamado de inicador de aplcaioos. 12 Jova para inciantes Mais uma coisa: 0 JDK ¢ executado no ambiente de prompt de comanda ta ferramentas de ina de comando, Ele no € um aplicativo de janelas,Tabém io € um ambiente de desenvolvimento integrado (IDE ~ integrated development cavironment ‘Nora ‘Alam das frramentas bias do nha do comand fomecidas com 9 JDK, hi vtios IDEs do ata qualdat sponte para Java, como 0 NetBaans oo Eipso, Urn IDE ode ser muto util ne deseruolimenta e implantace de splcatos comercial Como regra geal. vece também pode usar um IDE para compiler eexecutar os rogamat deste lie, s0 assim guise. No entanto, ae insvugéce apresentadas aqu pars compilagla« exceugo de um programa lava 36 descrever aa ftramentaa fe linha de corranda do JOK.€ facil entencer 9 motive. Em primeira agar JDK {2st prortamentedisponel pars todos os letores. Em segundo lugar, as nstucoes, para to do JDK serdo as mesmas para todos. Alm disso, para os programas Simplos apresentadosno liv, usr aa feramentas de ina de comand do JDK {2 abordagem mais fal. Se voce estver usando um IDE, tré que seguir suas insruges. Dovdo as dferongac onto os IDEs nao ¢ posal fomscer um conjunto feral do netrugoes. Pergunte ao especialista Voc diz que a programacio orientada a objets é uma manta eficar de gern ar programas grandes. Noenlanto, parece que ela poe aicionar una sbre- ‘argh slgalficalivn ous programas rsativamente pequencs.Jé que vc! diz que ‘odes os programas Java sto, at certo ponte arenas a objets, so ¢ uma dsvantagem para os programas pequctos? IR: Nao. Como vost ver. para programas poquenos 05 recursos vinldes&cbetos ‘le Java so guise anspretes,Embora ej verde qu Java segue urs modelo de bj sen, oe in ara ev nq nea enee 4 Em ge ‘spoon, 2“vientacte 3 oben” &quseimpercepivel. A media gus ss programas cescetem, Yoeé poe intgear mas recursos izalaescbctos Sem este, Um primeiro programa simples ‘Comeceros compiland eexeeulando a exemplo de um prograra curto mostra a: p ete 6 um programe uae stap coane este arguive do mxaupte. java w Glass samme | 17 te progeana Java soeeca son uns chonade a ain () pontie atatio vold wainisteing argatl) { syeten.cutprintin(*vava drives che WeD.*); ' 3 Capitulo 1 Fundamentos da linguagem Java 13 ‘oot seguir estas és etapa 1. Tosa o programa, 2. Compile 0 programs, 3, Execute o programs, Inserindo o programa (Os programas mostradoe neste livoextio dspontveisno site da McGraw-Hill: wor. ‘orsclapressbooks com: No entanto, se quiserinseriro programa manualmen', voos pot farerisso, Nesse eso, deve inserro programa em seu compotador usando um eiitor, e n30 um processador de texto. Normalment, os processadores de texto ar- ‘mazenam informagées de frmato junto com o texto. Essa informaztes de formato coafundirto o compilador lava. Se vooS estver usando uma plataforma Windows, poders empregar o WordPad ou 0 eitor de programagio que ne. ‘Na maior das linguagens de computador, © nome do arquivo que contém © céigo-fon de um programa éathitriro.Porém, no & ese @ caso em Java. A Primeita cost que voc deve aprender sobre Java &que 0 nome dado a um arquivo -fonte é muita inporiante. Para esse exermpl, © name do arguivo-fonte deve set Examplejava, Vejamos 0 pore. Em Java, um arqivo-fonte & chamado oficialmente de wnidade de compl Jago. um arquivo de texto que contém (entre outa coisas) uma ow mais de- Tinigdes de classe (Por enquanto,usaremos arqivos-fontecontendo apenas una clase) © compilador Java requ que 0 aguive-fonte use a extensio de nome de srquivo java, Coma vooé pode ver exeminandoo programa, o name da classe de- Fini por ele também ¢ Example. Iss no &coincidencia. Em Tava, to ego deve residir dentro de uma classe. Por conveagao, o nome da classe principal deve ‘coincide com o nome da arguivo que cantém o programa. Nocé tambem deve se cenifiear de que 1 capitalizagto do nome da urguive oineida com x da nome da classe, Ino ovore porguc lava diferencia maidsculas de mindsculas, Nesse mo- ‘mento, a couvengao de que os nomes de arquivo devem corresponder aos nomes das classes pode parecer arbitéria. Contudo, essa convengio fuss manutengio a onganizayio dos programas, Compilando o programa Para compiler o programa Example xceveo compiler, jac, expend 0 some do anv font ain de cormando, como morale yl javae ample. java (0 conmpiladorjavnecriard um arquivo chamado Example.class contend a versio cm bytecode do programa, Lembre se, bylesade no ¢cdigo executivl. le deve ser exccutado por uma Maquina Vitual Jaa. Logo, a saida do javae mio e6digo ‘que poss ser exceutado dretamente. ‘ra excoutar realmente o progrum, vocé deve usar imerpretador de Ja, Java, Para fazer isso, passe © nome da classe Example como argument de linha de comando, como mostradoabsizo: Jove Beample 14 Jova para inciantes (Quando o programa for executado, a sda a seguir ser exbide Quando 0 go fone Java compl, ca lass nerd rm eu pipsio snguivo de sds como mesme nome da clase taando aextesio cla E por 30 {he urs hoa iia dara seu aruiv-Font avo mermn nome da lass i cles onto nome do ari fone cincticom o nome do arquivo sass Quando ‘rd exevtar intrpretadr de Java como abe de mosua esr especifcando nome di clone que desea qi o nterpeetaor execute. Ele pocirartsitomaticn ‘rents um arive som ense nome que tena w exer laut, Se encom, exe tar. ign contd na clase especitiend, ‘NOTA Se, quando vot tntar compar o progam, 0 computador no pdr ach © Javac(esupondo que o JDK tenna sido nstalado conetarente, ther sel preciso {specifica 0 caminho que conduz as feramentas de ine de commando. Ou ei, no Windows, vod tra qu adicionar o camino das frrameriae do linha de ‘omando aes eaminhos da vargvel ambiental PATH, Por exemple, quando JDK 8 ¢ instalado no dretro Program Fes, o camino des feramentas de linha de ‘commando 6 somalhante 3 €-\Program Files\Java ahd. S.0\bin, e clro que voce tera que encontrar o caminno de ava em seu computador que pode ser aerente ‘fe mostrade, A ersao especticn do DK tambtm pode ser cferents) Voce ter que ‘onsultars decumantagao de sau sistema operacional par saber coma Seino caminho, porque esse procedimento varia ere os sistemas. Primeiro exemplo de programa linha a linha Enbora Example java sja bem cur, cle inl virios recuros-chae que S80 co- uns atsos os programas Java Examinemos com dctaes cada pate do programs ‘© programa comeya com as linha a seguir: je ste 6 un programa vaya sieples hae cote aegulve do mxanple. Jere ” Isso um comentrio. Como a mora das outa linguagens de program, Java pemite a insergo de uma observagio no arvo-fone dew programa. © comet de um comentio &gnorado pelo compilaor Ei vez disso pcamenti deserve ou explica a opera do programa para quem cstve ldo seu arguino- sfonte. Nesse caso cle estédescrvendo o programa lembrando que 0 aguivo- “Fonte deve se chamar Example java. E claro que, em aplicatvos reas, geralmeate 1s comenrios expicam como alguma parte do programa funciona ou 0 que um recurso espcifico fz. “vad suport ts etilos de comeatéros.O mestrado no inci do progr 1ma se chara comentario de viras linha. Ese tio de coment come com * termina com "7 Qualqur coisa que entiver entre esses dis simbolos de coment serdjgnorada pelo compilador. Come onome suges. um comentrio de vras inhas pode ter tas nas. Capitulo 1 Fundamentos da linguagem Java 15. [A pixma lina de cdg do pograma ¢ mostad ai: clase xampte ( Esa inka us palava-chave clase para declarar que uma nova classe ext xendo definida. Como mencionado, x class x unidade hisia de encapsulamento de lava "Example nome da clase. A definigio da classe comeca com a chave de abertira {()etermin com achave de Fechamento()). Os elementos exstentes entre as das caves sto membros da clase, Por enguanto no se preveupe tanto com os detalbes fds uma clase; ¢ preciso saher apenas que em Java toda #atvidade do programa ‘come dentro de uma. Essa & uma das nizBes porque tolos os programas Java so {elo menos um pouco)oFientados a objets, ‘A lina seguinte do programa € 0 comentdrio de linha dca, mestrado aqui 1) me progeana Save commce com un chamada = maia() Exe 6 o segundo tipo de comentirio suportado por Java, Um comentiio de link Sinica comega com // termina no fim da linha. Como regra geal os programadores sam comentties de vis linhas para observagGes mais longus c comentiios de Tina nes para deserig des eves, ln linha [A postin ina de cdigo 64 mostada abana: publie atatte void maincetting argett)( Esc linha comega 0 metodo main( ). Come mencionad anteriormente, om Java, ‘uma sub-rotna 6 chamada de métde. Como o comenvio que a precede suger essa linha em que o programa comeyar.a scr executado, Todos os aplicaivos Java co smegam a execugio chamando main() O significado exato de cada parte dessa linha ‘no pode ser forncei agora jé que envelve uma compreensdo detalhada de vsios ‘utror recursos da ingusgem Java, No entanto, coma muitos dos exemyplos deste live usario esa linha de codigo exaiinarcinosrpidaente cad pate, A palavra-chave publie¢ um madjicador de aesso. Um medificadr de aces- 0 determina como outes panes do programa podem acesar ox menos da clase. (Quando a membro de uma classe ¢precedido por publi ele pode ser aceetado por tum cédigo de fra da classe em que foi decarado, (0 oposto de public € private, que impede que um membro sea usado por um cédigo definido fora de sua classe.) [Nese so, mai ) deve ser declarado como public, jf que tem que ser churn or umn ego de fora desu classe quando program To iniciado A palava-chave Stati permite que maint) sejuchamado antes de um objeto da classe ter sido ria. Isso € nccessrio porque main( ) ¢ chamado pela JVM antes de qualquer objeto ser criado, A palave-chave vei simplosmente informa wo compiladic que main) 0 ‘etorna um valor, Como voe® ver, os metodes tami podem recornar valores. Se tudo isso pazece um pouce confuso, nao se proocupe. Tedos esses conccios serio Aisutidos com detalesem capitulossubsegumtes. Como mencienado, maint ) 0 métode chamaulo quando us apicaivo Java ‘omega. ser executado, Qualgerinformago que voce ter que pasar para wn me todo soni reccbida por vardvesespocficdas dentro do conjunto de partcees qu seguem o nome do méiodo, Essex vardvels so chamadas de pardmetins, Mest 32 ‘neahum parimteo for necessrio er um determinade med, ved ter que inst os partnteses vazios, 16 _Java para inciantes Em main()h somente um parimetro, String args| J, que declara um parime- teochamado aps Ble Sum aray de objeto de tipo String. ras so onjanios de bjetos semelhantes.) Os objets de tipo String armazenam sequencias de caracte- res Nese caso args rccbe qualquer rgumento de linha de comand presente quan doo programa éexscttado. O peognana em quostio nao faz uso dessa informagses, mas outs programas mostradosposteriormente neste iro far, ime caractre da linha [, Ele snaliza onic do corpo de main. Todo ‘0 cfidigo include em tm minds ocomer cate a chave deabertina do mito e saa chhave de fechamento. ‘A proxima nha de ego € mostra a sep. Observe que ela ecore dent demain’). ayrtee. out peintla(+vava driver the feb. Esa linha exibe o string “Java drives the Web” seguida por una nova linha aa tla Na vere sida ¢ exibida pelo métado intemo printing). Nesse cas, printla, )exibeo string que € pasado para ele. Como voe@ veri printn( ) também pode ser usacdo para exibic otto tpas de informasées. linha come com System.out. Embors sje muito complicada para explicannos com dealhes neste momento, em resumo, System € uma classe predefinida que di acess ao sistema, e out € 0 fuxe de sida que esti concetado ao console. Portanto, Systemoult € um objeto que en- ‘apaula a saida do console. O fata de o ava usar uo abjeto arn defini asta do console é mais uma evidenca de sua naturezs orienta a objets. Como vooé deve ter notado, a sida (ea entrada) do console ado € usada com froquéncia em aplicativos Java do mundo real. Ji que a maioria dos ambicntes de contputagio modernos tem janelase ¢ grdfica, 0 VO (inpuvloutput ou eneadassfda) {do console ¢ mais sad para programas litres simples, programas de demons trasaoe codigo do lado do servidor Posteriormente neste liv, vocé aprender ox teat maneires de gorar cada usando Ja, mas, por enguant, cotinaareros a sar ‘me méados de 10 do console. (Observe que a insrugdo print ) termina com um ponte e vigula, Todas as instrugdes em Java terminam comm um ponto¢virgula. As otras linbas do programa ‘io termina em um ponto virgula pore, tecnieamente, no so instruc. (0 primero simbolo | do programa tennina main) © © imo termina a def igo dt classe Example ‘Um slkimo pont: Java diferencia maiisculas de miniseulas. Esquecerdis- 10 pode Ie casa problemas graves. Por exemplo, se voc digtar acidentalmente “Main em vez de main, ou PeintLn em vez de prinhn, o progruans anterior estar incoreto. Alem diss, embora o compilador ava compile classes que nio contém tum método main(), cle nio tem como exceuté-las. Logo, se voc diitase crado ‘main, 0 compilador compiara sew programa. No entano,o interpreta de Favs felataria um ero por nfo conseguir encontrar modo main). Tratando erros de sintaxe Se ainda nto tive fet iso, ns, compile e execu o programa anterior Como vos! deve saber por sun experncia anterior om progrumacio, é rite fei digitar algo in ‘cometamente pracdente ao inserir igo no computador: Felizmente se vac insert Capitulo 1 Fundamentos da linguagem Java 17 lg erado em se programa, o compilador exibiri urna mensagem de ert de sntaxe ‘quid tent compili-o.O compilador lava tents entender octidigo-fonte no impor- tandoo que fi esr, Portant, «err que ¢ rela nem sempre reflete a cas eal do problema No programa anterior. por exemplo, uma omissio acidental da chave de hertura depeis do méindo main( fri ocompiladorrlatr os dois rosa segui: Sample javarde 154 expected [pubLIC static voud masa (strtog arget}) ‘mample.javarias elas } |, tncertace, or enun expected claro que primeira mensagem de co st ttamente eral, porque 0 que ead {alum io un posto vig mas una cave. 1 importante ness dissussdo & qv, quid Seu programa vr um ero de inte, vot lo deve acta itralmente 2 mensagens do compar Ela poet serengannsas. Voce pode er de ef una mennagem de eo pa ence problem rel. Examine ambos mas linha de codigo de seu programa que Entscedem a in que ests send indcads, Ac were, um or elt vas Tins ape ponto em gue oe realmente ocore, Um segundo programa simples Talvez nenhuma outra exrtura sj tho importante para uma liguagem de progr- ago quanto a sribuigio de um valor «urna variévl, Uma varidvel um local no- ‘mead a meméria so qual pode ser arbuido um valor, Am diss, o valor de uma ‘arvel pode scr allerado durante a execu de um programa, Isto €,0 comet de uma vardvel ¢ altersvel¢ no fixe, O programa asic cra dus variveischama- das var eward: fe ‘crane gate-arquivo 62 Example2. ava Glace Beampiea ( ‘pinaie atatic vold mainiatring args) { ‘ane vari; // esta anstrucso Seclara una variavel — Deca vats int va12) // ows inatrucie declars outrs versivel vari = er4) // cota inatrvedo-acrtbut 2024 8 vart ati um ior vet mautrtotlntevaet ttitaian + vata} vara ever 2 laytton.out print (evara conthina'vari / 2: + systen.out.printin(vara) 18 Jova para inciantes (Quando vooe executar ese programa, vera sald bain varz contains vari / 21 siz se programa introduz iris concitos novos. Primeio, a instugo ant vari) // esta thetrucso aactara una vartsve1 eclara uma yariivel chamada varl de tipo inter. Em Jaa, todas as varves de ‘vem ser delaradas amos de sorem usadas. Am disso, o tipo de valor que avarével pode conte também deve ser especificado, Ele échamado depo da varidvel. Nese 280, yar pode conter valores interes. Sao valores que representam mimeros inte ros, Em Java, para declarar uma varivel com de tipo ineiro, é preciso preceder seu rome com palavrachave iat. Poranto, a instrugao anterior doclra uma varie! shamada vael de tipo int ‘A Taba seguinte declara uma segunda varsvel cama var2: Observe que essa Tinka ust 0 mesmo formato da primeira, exeeto pelo nome da va ridvel sr diferente. ‘Em geral, para declrar uma varivel, amos uma insrugo como esa: ‘ipo nome-var; Aqui, dno espeitica o tipo de varivel que estésendo declerado © nome-var & 0 ‘nome da yarivel.Alén de nt Javad supe avérios outros tips de dads. A linha de codigo absino arbi award o valor 1025: wart = as, // es0m inatiucto azrimat 1004 a veel im Java, o opersor de atibugio é0 sinal de jake simples. Ele copia 0 valor de lado diccito para varidel& sua esquerda. ‘A prima linha de cidigo exe o valor de war precedid pelo string “vat contains syeten.out peintla(tvart contatne + vari) [Nessa instru, o sna de adigho faz o valor de vnel ser exibido apis string que fo precede. Essa abordagem poe ser generalizada. Usando o operador + voce pode ‘encadear qoantos ites quiser dentro da mesma instrugao print) ‘linha de ego squint atibu a vard oval de vael div van = vant / ar sa linha divide o valor de vari por 2 ¢armazena o resultado em var?. Ponanto, ‘psa linha ser exectad, var2.comero valor 12. O valor de yuel permanecerd inalterado, Como a mtioria da outa linguagens de compotalor, Java di suport a tm conjunte completo de operadores aritmeticos, inclusive os mostrados aqui: ido por 2: ago Subteieo Mstipicao Dwi Capitulo 1 Fundamentos da linguagem Java 19 -Bsas sho as dus lnhas seguintes do program: system. ut print (tars eoatalne vast (21); syetem.aut.printin vara) Dis fatos novos eto ocorrendo ai. Em primero lugar, o métao intemo pein) sad para exibir orig "var2contuins vael /2:°. Esse string nd ¢sepuido por ‘uma nova linha. Ouse. quando apréxima sida fo gerada, la comegari na mesma Tinka, © método print) ¢ exatamente igual a penta), excoto por no exibir uma ‘nova inha aps cada chamada, Em segundo lugar, na chamad 2 printing), observe «que var? € sada sozinha. Tanto print) quanto print} podem ser sades parar cxibie valores de qualquer um dos ios intemos do Java, ‘Mais uma cosa sobre a declarag de vriveis antes de avangarmas:&poss!- vel declrar dus ou mais variveis usando a mesma instrugo de delaeaio. Apenas scpate seus noms com virgulas, Por exemplo, vale war? poderiam te sido decli- radu asim steer 'wieg) fea senshi Smtiet Outro tipo de dado [No programa anterot, um vardvel de tipo int foi usada, No entanto, a varivel de dpe int x6 pode conte aimerosintirs. Logo, no pode act usada quando in ‘componente fraiondrio for necessri, Par exempl, uma varsvel int pve contr ‘valor 18, mas no o valor 183, Flizmente int € apenas um dos vio ipo de dads Aefinidos por Java Pa permit menos cor componentesFracionsiios, Java dei- ‘ne dis tipor de poto latuante: float e double que representa valores de preciso simples e dupla, especivamente. Das dis, double ¢ © mais usado. ara declrar una varivel de tipo double, use uma insrugdo semethante& estrada abs ‘Aqui, x 0 nome da vardve, que €detipe double. que tem um tipo de ponto ‘ante, poe coner valores com 122.23, 0.034 ou — 19,0. ara catender melhor a dferenga care inte double, este o programa a seguir: a ‘nese programa tiustra a iferenca (Shame cave arguive de Beamples. java “ Glass cemeies | public cuatic void matn|steing arge(l) | iat var) // eaea taatruege declara una variavel tnt Goupie x // e09a inecruczo aeciara ima varivel de ponto tiutuante wae = 10, // steams 2 var 9 vale 10 x 20.0) // atriput a x valor 10,0 20 _Java para inciantes: system.out.printin(voriginat value of vars * 4 vari faystem out princimivoriginal value of #1 * + X11 system oot prantin(), // expe sna Lanna gw nranso at Sab una inta 1) agora aivide 20 uae por 4 vars var / 4: eens syatem.out.princinivvar atter divisions * + vari) A sada dest programa & mostnda gu: originas yanue of vars 20 Grigina value ef 310.0 war aftor division: 2 camgenants resent nro X atter division: 2.5 corpora avon preerado Como vocé pode ver, quando var é divide por 4, uma dvisto de nimeros imeiros ¢ execuiada © 0 resultado 2 ~ 0 componente frciondrio & perdida, No ew tanto, quando x€ diva por 4, o componente fraionitio & preservadoe a resposta propria €exbida, Hi outa fit nove a ser observade no programa. Para exibie uma linha em tranco, simplesmontechanamos peintla )sem nenhum argument, Pergunte ao especialista Porque Java tr tipon de das diferentes para intsros valores depot ‘ante? sto por que ad so toes valores numérica do mesmo tipo? RE Savane ip de dad ferries ar qu wet pon cra progemas ictes, Preven. arimcs dines ¢ mals pda 6 qos culos de poate Hawa ‘Log, se vot mo precisa de valores cons no er que seer a sabe 5o- Mair quo Mair ou ut (gaia Observe que o teste de fguakiade usa osial de igual dup, ‘Aud est um programa que ists a instr i a ‘cuane gete arquivo de tipeno. java “ lass 1en0 ( public sratic votd wesn(steteg aegail) (| Capitulo 1 Fundamentos da linguagem Java 23 system. out prinean0 crab 1) conten 2 ‘systen.out.printin(te contains -1"); sije s0 0) System cut prinvin(te te non-negative] ele <0) Syston out printiaive Le negative) system out prtneint) e+ ba) 17 agora c conten 2 oysten out printinite contains 2°), etic oo} System out proncin(ta t= non megaeivet | see <0) syetamsout.printla(ve te negative) A sada gerada por ease programa € mostrada aqui Oherve utr cosa nese programa, A linha oclara wis varivcis abe ,wssndo uma lista separada por viegulas. Como men- cionado anteriormente, quando voe® precisa de das ou mas varidveis do mesmo tipo, elas poderio ser declaradas na mest instru, Apenis separ os nomes das ‘arses com virgulas 0 laco for ‘Voeé pode execuarrpetdamente uma sequénca de cig erando um ago lava forme um grupo poderoso de estaturas de lag, A que exainaremos agu € ago for. forma mais simples do la fr é mostra segu ontnictalen to; condi; erage) Intro; Em sua forma mais comum, a pare de inciting do do lago define uma varié~ ve de contole de lago com um valor inicial.Condicdo ¢ uma expresso boolcana aque testa a varivel de eontole do lag. Se 0 vesultado dese teste for verdadero, © Jago fr continua a itera Se for flo, olago scr enerrad. A expressiode iter 24 Jova para inciantes ‘fo determina como a varivel de lagn ¢ alterada smpee que lago itera. Aqui est tum programa custo que lusts o lage foe: fs chane eave arquivo de rornem.3ava wv Ease vartene ( ‘pubiie atatie vold mainisteiog argetl) { fostcount = 0) count < 8; count = ounce) + oso lago ara cnc wos, Systen.out pristin(-zhis is counts * + count!) syeton.out printin(*pone!*1 ' ) ‘Asada gorada polo programa & mostra aul: [esse exempl, count é a varvel de conole do lage Ela vonfiguraa com 20 4 pare de iniializos30 de for. No comego de cada iterayao (inclusive a primeira). o este ondicional count <5 exccutado, Seo resultado dase este for verdair, serio exe cuadasinstrgio penile )e eno a pare de itergio do lag, que aumertar count ‘ct uma unidade. Ese proceso continu até teste concn ser also, momento et {ue a execusio éretomad no final do lage, Ointsesante¢ gue cm programas Java Criadosprofisionalmente qusse nunca vemos a parte de trap do lag exrta como ‘mosrado no programa anerio.Isto 6, rarmente vemos insti come est: [hao acore porque Java inclu um operador de incrementa especial que execu essa ‘operagio com mais eicigncia. O operador de inctemento & ++ (ou ej, dois snais de adigaoseguides) Ee aumenta seu operando erm uma unde, Com o ws do ope- rador de incremento, a instugdo anterior pode sr eseita assim: Logo, lag for do programa anterior normalmente ser eserito desta forma: Se quisr, aga o teste. Como verd, 0 lago contnuardsendo executado exata- Java também fomece um operador de decrement, que éexpecificado na forma =. Esse operadordimii sou operando em wma unidade. Capitulo 1 Fundamentos da linguagem Java 25 Crie blocos de codigo ‘Outro elementochave de Java 0 bloc de eg, Um bloso de eéigo & um agra- ppamento de dss ou mais instases Isso ¢ fit com a incluso da nstragies entre chaves de aberturacfechameno. Quando um bloco de cédigo ¢ ciao cle se toma {um unidade igica que pode ser wsada em qualquer local onde seria sada umn i= ct insrugio, Por exerplo, um bloco pode sero alvo de insiugGes i for em Java Consider a segunte insta £0 < 2) { <—— fo ao aco ) + Fimao ace Aqui, sew for menor do que has das insrages do bloco serio executadas, ‘Logo, clas formam uma unidade lgic,c uma nstrugio lo pode ser exccutada sem ‘otra. O ponto-chave¢ qu sempre que voce precisa vincular lagicament das ot ‘ais instragdes, pode fazer aso cana um bloc Ox blocos de ego permite {qe mites slgoriimos seam implementados com mae clareraeeicincin. ‘A seguir, temos um programa que usa um bloco de eédig para impedir a di- vis por zero: " chane gate anqutvo de stecsneno. java Glace elockoane | pubic atatie void raia(etring arge(0) | ‘oubie 1, 3. a yea 11.9 sive desta tartructa Lf & um bleco e6io9 ito ( _ syaten.outprintin|*t does not equal eero") peeve [teatime fans _| ) } ‘A sada gerada por esse programa & mostrada aqui: dst 28 | ten o, [Ness enso, «avo da intrugio i 6 um bloco de ego ena una insu inivi- Adal Se a condi que conta ifr veradeira (como € aga) sts insragbes do ‘loco serio exccutadas. Tente configura com zero observe o resultado, Voce vert «qe oblocointziro¢ ignorado, 26 _ Java para inciantes: Pergunte ao especialista ©. mae de wn bloc de ge Intradur agus inefitncl de emp de exec ‘0? Fim utrasplaveas, Jaa exeeuta reaente(e? IR: to. blocs deco nao adicionam nenhuma sobrecarga. Na verdad, devi 3 Su abide em simpliiar ciao de certo algrtmos geramene se ws Sumeais Velocidad ea ein. An dso, os solos |e | exis apenas 0 tio fonte do proprara Jara nap excula|€ J (Como voot vend poseriomente neste livro, ox blacos de cftigotém prope: ddades e usos aicionais. No entanto, a principal razao de sua exstécia€a eriagso de tnidades de codigo logicamente inseporvis, Ponto e virgula e posicionamento tm Java 0 pono vga 6um separator que € wad para erinar ua inirogo Ino cade inetreca vidal foe hilieada com tm pene vague indice im de uma cxtdade gic. ‘Com we she, um boco¢ um conto de iasbutes cones ogc imenfe queso deiitaas por chavesdeaetrsfeckament, Een fade et pent ai gi Sis ita itm er gal ‘por cade inate far eno que oor ao su enna com un pote vir gulasom vr dso fim do lon inca pel chae de fochamentn Trews rt fi int cro an reac Pra ws ingot cc na lina inscimes una isto Por compa yeyeu EOS helcdene 4 os imeem of Alem dso, x clemenos individ de uma instr também pode (iiacen bates gens Perma cig ign & peta ei systen.out pristla( ‘tiie te a long Line of output + xeyres cee anepatl A divisio de lnbas longas desea forma costa sr sacs par a ciago de progra- ‘mas mais legtveis,Tamibém pode ajar a impedir que linhas excessivamente longas assem para prima lina. Praticas de recuo ‘Voc’ deve ter aotado nos exemiplos anteriores que certa insrupbes Forum recuadas {avn 6 urna linguagem de forma livre ou aja, io importa onde inserims a nse es em uma Tina em relagio units Bs outta, No ettanio, com ox anos, deseavel- Capitulo 1 Fundamentos da linguagem Java 27 ‘veurse um estilo de reco comum ¢ acto que proporciona programas mas levis. Exe lio segue o estilo « €recomensivel que voc’ faga © mesmo, Usando esse catilo, voce recuars um nivel ape cada chave de abertur exe mover para tis em ‘um nivel spe cada chave de fechamento, Cena instrogBes encorajam slgum recuo ‘aicional elas sero abordadas posteriemente, | Tente Isto 1-2 | Melhore o conversor ‘oo pode us lage for, instru ie blocs de ego para rine uma sero melhorada do comersor de galdes er ito eseavelvia no primeiroprojeo, Essa nova versio exibicd uma tabla de convenes comecando com | galio ¢terminando em 101 gales. A cada 10 gales, uma linha em brancoserdexibida. Iso ¢ feito com o ua de uma viel cama counter que ‘ont mere de nos que foram exbids, Pres uma atenga especial nose us. 41 Cie um novo arquivo chamdo Gal ToL Table java ani ssuscaabe ae 2. Tnsirao programa a seguir no aruive i convers6ee de gatdes em 1itr08, chane-o de taaitonittable. jaro" ” clase calrexatrante ‘public static vote masn(steing 20929) | lias 6 sont cam zr. forigeiions i; gallons <= 208; gationses) ( syaten.cut-printinigalions +" gations ta * + countars+) <¢—— tnremant anlar de ini edhe do op (7 a cada décina itha, exibe una Lipha ew Branco tecenmeer == 1a) {-¢————Seowior Syssen.ovt print al antago fr 10, counter o) (/ 2673 0 contador do tinnas bo uma ins , ) ) 3. Compile programs usando atinba de commande sbsina: avec antrenienabie. java 28 Java para inciantes 4, Execute o programa usando este comand: java catrenseanie Aqui est uma parte da sida que wood ver 2.0 galtons te 2.7864 aitere 2.0 gallons is 7.ste Liters, 31a gations {2 2u-tseacv00eo0004 14% So gallows 18 22.927 Liters, lo gallons 12 22,712400000000002 1iters 33:0 gattone 19 45 s2aneo000000005 1itere 2318 gations an a22i0a itera, as.o gations 4s se.71 2icers. 26.0 gationa 29 60 56st 11tera, 30.0 gatteng 4 75.708 2ivers. 26.0 gations 19 s4.4aue Liters 27.0 gations 19 102.2056 11ers So1g gatieng 19 113.562 1itere As palavras-chave Java Ha 30 palavras-chave defnidasstualmente na inguagem Java (consule & Tabela 1-1). Ess palavraschave, combinadas com asintaxe dos operadores eseparadores, formar a definigdo da inguagem. Elaenio podem ser sada como noms de vais: vel, claae ou metodo. As palavras-cave eonst © goto esto reservadas, mas no sto wsadas. Nos primis de Java, vias outras palaveas-chave estavam reservadas para possive "so futuro. No entano,«espeificagio aa 6 define as palavras-chave mostadas ‘aa Tabla 1-1 Capitulo 1 Fundamentos da linguagem Java 29 “Tobela SLAs palaraechave Java can ‘ily import ‘wis ie ‘case continue detaut © mpemenss long native public rewn ‘ten “grcworizod Wy wold Aon das palavas-chave,Javn reserva is puveas a Segue tue, false e mall, ‘Sto valores definides pela linguagem. Voc’ no pode usar ests palavris em nome de variveis, classes asim por diante Identificadores em Java Em Java, ui idenificadoré @ nome dado aun metodo, oma varivel on quiver cout ite definido pelo usudrio, Or idemificadores podem tor de um a varios cat rcteres. Os nomes de vardvel podem comepur com qualquer lea do alfbeto, um sublinado ov um cio, Em sepuid pode Raver uma ler um dit, um ef ou ‘um sublinhado, © sublinhido pode ser wsado para melhor a Iepbildade do nome da vanivel, como em line count. As letras maisculas mindsculas slo diferentes, fu sj, para Java, myvar ¢ MyVar sto nomes diferentes. Aqui esto alguns exem~ pls de idemificadores avetives: st . 2 antoaa 0 08 myer sampezs Lembre-se, vod no pode iniciar unt dentfcador com um digit. Logo, 12x um ‘Memificadr invalid por exemplo, ‘Voce no poe usar nenhuma das palaras-chave Java como nomes de ideaii- cador.Tumlbém nto deve aibuir o nome de nenhum métedo padric, com printn, como um identfcador.Além dessas duasrestiges,a ou pritica de programacio _reconiza 0 uso de nomes de Wentificador que refliam o significado ou 0 wso dos tens que esti send nomeados. As bibliotecas de classes Java (Os exemplos de programa mosirados neste captulofazem wso de dos das métados Jimernos da inguagetm Java: printlnt ) eprint). Fsses métodos so acessados por inermio de System.out. System ¢ una classe predefinida pelo Javaque ¢inclida ‘utomaticamente nos programas. De um modo geral,o ambionts Java dapende de ‘irae bibioweas de clases interna que conta muitos métodos intenox para dat suport a cosas como 10, manipulagao de strings, rede eclementongrificos, As 30 Jova para inciantes classes pad tamhém do suporte a uma interface grifica de usuario (GL. Pee- tanto, Java como um todo € uma combinaso da propria Hinguagem Java mais suas ‘lasses pario, Como vo? veri, a bibloteas de clases fornecem wna pors0.com siderivel da funcionalidade que vem com Java. Na verdade, faz pan de Se tornar programador Java aprender usar as classe Java padi. No dscorrer deste liv, ‘ros elementos da classes © métados de biblioteca pdr so descritos, No en tanto, biblioteca Java ¢ algo que vod tambien vai qverer exporar melhor per a Pripria conta, v Teste do Capitulo 4 Gaye 6 pecs nl epi td dec og lems Inert? (Quais sto os ts prncipiosbisios da programasio orients acbetoe? (Onde os programas Java comegam a ser execuaos? 0 que 6 uma varvel? (Qual dos nomes de varivel a seguir €invlido? A. count B. Scount © couni27 D. Stcount Com se cia um coment de inh nia? E um coment de wri lnhas? “Mostra forma geral da instrusdo if, Most tambsm a do lao for. Como se cra um bloco de ceo? A grmvidade da La 6 creado 176 ada Tera Cri um programs que eaule set peso na La 10, Adapts cdign da segdo Tent isto 1-2 pars que cle exiba uma tabola de comers de pga para metros Exiba 12 ps de converses, polegaa & posal Gore ums item banc cad 12 poegadas. (Um meio gual 2 ‘poximadanent 39.7 plegada) Se vx cometer um engan n digg ao insrir eu programa, so va e sullr em qe ipo de eno? importante lca ond insrins uma instrgdo sm ua iba? BE 8 Capitulo 2 Introdugao a tipos de dados e operadores 32_Java para inciantes: Principals habilidades e conceltos © Conhecer 0s tipas primitives de Java © Usa literais © Tnicialigarvariveis © Suber as regras de escopo de yutiveis dentro de umm método © Usar os operadores aritméticos © Usar os operadores relacionats€ ligicos © Entender os operadores de atribuigao © User tril ides abrovindas «= Emender a conversto de tipos em atribuigdes © Coavertertipos incompativeis + Emender a conversio de tipos em expressoes a hase de qualquer lingwagem de programas esto sous tpos de dads © ope- eadores,¢ Jva nto 6 excaro. Fssos clement definom os limites de um lin lzuagem e determina o tipo de arf s quas ela pode ser aplicada,Feizmente, Jinguagem Java di suport a um rico grupo de tpos de daos ede operadores. © que ‘toma adequada a qualquer tipo de programas ‘Os tipos de datos © ox operadores so um assuntoextenso. Comepuremos au ‘som una verifcagao dos pos de dads icon de Tavs operadores is ws des. Tambem examinaremos com detales as vaiveiseestadaremon a expresses Por que os tipos de dados sao importantes (Ostipos de dado sto expecalmente importantes em Java ponque essa ura inguagem forte tipada, Ou sja toda as operages tna compatiblidade de seus ios veri- ficada pelo compiladr. Operates ivdlidas no seo compiladas. Logo, a verificacle ‘minucios dos pos ajuda impedir a acoréncia de eros © melhorn«confishlidade Para que sea possvel fazer a verfeago cuidadosa dos ips, todas as varies, ex presses valores tém um tipo. Nao hi o concito de uma varivel “sem tipo”. por exemple. Alem dss, o tipo de um valor determina as operagdes que poem ser ckccu- tadas ele, Una operagio aplicada a um ipo pode no er perma em out. Tipos primitivos da linguagem Java Java contin duas categoria gers de tpos de dados interno: oricatados a objetos & ‘lo orientados a obctos. Os ips oientados a objets so defiidos pr clases, as ‘discuss das classes sent deixada para depois, Porém, na base de Java eros cit Capttulo 2_Introduc80 a tipos de dados e operadores 33 Tabola 2 Tpos de dados primitives iternos de Java Tipo ‘Signiicado boolean ‘Represent os valores verdad also to Inte do 8 ts ar oraere double onto tutante de rei aia fost onto tutuone de preciso simp ong ine ong sort ber auto tipos de dados primitives (ambém chamados de elementares ou ssmples) mostrados ‘aa Tabela 2-1-0 termo primiivo € wsado agi para indicar que esses tipes no so ido da orentagioaobjetoa esi valores binds comune. Eases tips rimitivosnio sao ubjtos devido a questes de eficincia, Todos s euros ipos de thos de Java slo consirudos a partir dos tips primitivos. “ave specifica rigorosamente um infervalo © um comportamento para cada ‘ipo primitives que todas as mplermentagdes da Maquina Viral Iva ever spot. evido a requisito de portabilidade de Java a linguagem ¢inflexvel ness aspecto. Por exempio, tm int igual em todos os ambiente d execuso. een permite qu 0s Programas seam totalmente portives. No precisumos roserever um cdigo para ‘dela una platform expecitia, Embors a espeificagag rigorora do interval ‘dos tipos primitives possacausar uma peguens por no desempenio et alguns m= bienes ela necensria para sobtengo de pertaildade Inteiros Sava define quate tiposintizos: byte, short, int clang, que so mostados au Tipo ‘Tamanho em bits Intervalo to 5 “198.3127 sort 6 -92,76832.767 ine 2 2.147.489.6489 2.447.489.647 org ee “9.222,72.026 854.775.8080 Como a tabela mostra, tos os tpos inteirws so valores de sna positiva © ncgativo. Java no superta intiro sem snal (soma positives). Ourasinguagens de computador suporam interes com e sem sinal, Noentanto os projtstas d ava decidiram que iets sem sinaleram desnecessiios, ‘Nora Tecnicarerte, osistama de tempo de execugso lava pode usar qualquer tamanho ara amazenar um ipo primi. Contudo, em tedos 0 ca80s, os tipos deve agi ‘come especiicado, 34 Jova para inciantes (tipo imi mais usodo ¢ int. Variveis de tipo int costumam ser empregadas no controle de las, na indexago de arays ena execusdo de eileulos de ineieos para fins gers ‘Quando vos procisar de um intsito que tea um intervalo maior do gue ode Int, use lang Por exemplo. qui est um programs que calcula quantaspolegadas hi fm um cubo com 1131 man: ip “ class Innes ( Public atatic votd main(String argetl) { Yong ins ‘Agi est sida do programa: claro que o resutadonio poderin ser mantido cn uma ariel at ‘0 enor tip into byt. Varsity bye sn espocilmete eis no trabalho com dads bindros bats gue poser a ser detamente complies com cto pos intems Java O tipo sort cia um insect, Varies depo short ‘So apopradss quando mio preisamos do interval maior feck por int Pergunte ao especialista Vox z ques quatro tps de intern, shot ange byt. No entant, oat {ilar gue char tamsim pode ser eategorizudo como um tipo intr em Jaa, ode expat? RR A especifiagt formalde Iva define um categoria de tip cama tipo ins ‘is. qu ilu byte, shot. int. ange char. Els sie chamads de tps intcaais orgie tos contém valores binds intetros. Nena fn dos quatro rte ropesentar quaniidades nies euaecas A finale de ear re presenta craters. Logo, sus principals deehar€ os dos ios ios integrals sao tasicameate dicrentes. Devdo serena. ope chur € wad seprada- mente neste io, Capttulo 2_Introduc3o a tipos de dados e operadores 35 Tipos de ponto flutuante Como expicado no Captulo I, 0s tpos de pont futuant podem epreseatrnime- ros que tm componente fraionios, Hi duas espe de tipos de pono utwante, float ¢ double, que representam néimeros de preciso simples dupa, respectiva~ sent O tip loa em 32 Bisco tipo doublet 64 bits ‘Dos des, double ¢ o mais usado, porque todas as fanes matemiticas da biblioteca de clases Java usam valores double. Por exempl,o metodo sat) (que € defini pela classe padrio Math) retorna um valor double que éa riz quadrada dz sca argument double. Abino, sqrt) ¢uxado para calcula o comprimento da hipotenusa dados os comprimentos dos dis lads oposos ' para encontrar @ compriamato {a nipoteniea dadoa 08 conprinentoe ” hace spot { ‘pupiie static vord nasn\sering argats) | yee Coser camo sq) ¢enamace ce & pececlse treme dass aa qu rea pe machadtelate = yer: syeten.out princin(emypotenuae 48 + +2)5 A sada do programa € dad seguir sypotenuee 19 5.0 COutra coisa sobre exemple anterioe como mencionado, sqrt) & membeo da classe padeio Math. Observe como set) & chamado:& precedido pelo nome Math, Isso € smelhante 8 maneira como Systemout precede printin(), Emibra nem todos os metodo padro sem chamados com a especificagao do nome dest classe ants, vrios 0:40, Caracteres Em Java, os curator alo so valores de 8 bits como em muitas otras inguagens dd computador. Em ver diss, Java usa Unicode. © Unicode define um conjunto de ‘aracteres ue pode epresentar tds os caractres encontrado em todos os idioms hhumanos. Em Java, char & um tipo de 16 bits som sinal com um intervalo que vai de 0 65.536. 0 conjunto de caractees ASCH de 8 bits padrio & um subconjunio do Unicode e vai de Oa 127. Logo, os caracteres ASCII sina so earacteres Tava 36 Jova para inciantes ‘Uma varivel de caractere pore rccher um valor pela insergo do caractere entre aspas simples, Por exemplo, est eg ati 3 varvel eh letra X ‘oot pode exibir um valor ear usando a instruedo priatln ). Por exemplo, a linha sguinte exibeo valor de ch fynten.out printin(+ttda de chs * + eb) 14 que ehar é um tipo de 16 bits sem sina, podemos tratarartmeticamente uma vargvel char de muitas manciras. Por exemplo, considereo program abaixo: Ay variavets do caracteras podou sor tratadae cone inteiros. fase chararicanene | fponiic sratic votd exsn(steseg s293%i) (| byeten.out.princiniten ooncains + + only abies 12 steams & varios Syeten.out.prinein(ren 18 now = + oh) fh = $05 // 88 2 ch o valor 1 —— Umeha pate ear um ator so, syeton.cutprintin(ees is now = + ey A saida gorada por esse programa é mostrada gu: [No programa, pimeito dado a cho valor X. Em seguida, ch ¢incrementada, {sso sla em eh contendo Y,o proaimo earictre na sequin ASC ( Unicode). Depois ch recede o valor 90, que 0 valor ASCII (e Unicode) comespondente letra 7 Hcgue o conjuno de caracteres ASCH ocupa os primeirs 127 valores do conju ‘de caracteres Unicode, todos 0 “veh trugues” que voc$ usria com caracteres de ‘utr idiomas também funcionardo em Java. Pergunte ao especialista P: Porque Jaws Unde? Jaa fo projtda pa so mundial. Lag, tem de wr un cnjuna de crates ‘ae onan reser mas do uo ad, © Unicode conjnto d ac ‘eres puto projtao espcilentspracss im Fela que ous o Unicode € ineiciente pra ios como ings, semi, expen ou francs coe cartes ‘dem er armarenados em 8s maces €o peg ase pogo pea portbildale ‘ba Capttulo 2_Introduc8o a tipos de dados e operadores 37 0 tipo booleano 0 tipo boolean representa os valores veradirofalso, Java define os valores ver= dadciroefalso usando as palavrasceservada true c false. Logo, uma vars ot ‘expresso de tipo boolean ters um destes dois valores, ‘Aqui estdum programa que demonstra tipo boolean: ‘last aoolden ( pubic static votd maintetring arge()) 4 Syston cut printin(te te". &) systen.out.printin(te 18" +B): 1) wx valor bocleano pode controlar a tnstructs 46 em) syetam.oue-printin( mia le executed.")y 1€(b) syaton.out-printtn("rhto 18 aot exccutea.*)) 1/9 secwlzada ds un cparador solactonal § sm valor Booleans A saida gorda pr este programs & mostrada gui Tiésfatosinteressantes edestacum neste programa. Em primo lugar, como ‘ved poe ver quando am valor boolean ¢ exibid per prntn )a playa “tron “false” usads Em segundo lgaro valor de uma varidvel boolenm €sufcente para controlar nsiuso if Nao hi necessidade de escrever ma insrosio if comma ext: Em terciro lugar, resultado de um operado rlacional, como <,éum valor boolean, Portanto, «expresso 10> 9 exibe w valor "true", Alm dis, o connie de paréntesesadcional delimitando 10 > 9 6 necessti, porque © operador + tet prccedéncia maior do ue > 38 __Java para inciantes Ey Qual é a distancia do relampago? ‘ous java} Nese projeto vod eran um programa que calcul aque distinc 5 “S7.) ym outinte ca da queda de una relimpago.Q som viajes aproximadamen: {1.100 pés pr segundo pelo a. Logo, conbecero iervlo entre momenta em que ‘oot vin um refimpgo ec momenioen que o somo alcange he pent calla istiniadorelimpage. Paraest projto assuma quo intervalo sea de 7.2 segundos. 41 Cris um nova arquivo chamado Sound java 2. Para calculara dstincis, voo$ tend que usar valores de ponto flutuane. Por ae? Pongus o interval de tempo, 7,2, tem um componcat fraciondrio, Embo- "a pucésseros usar um valor de tipo flat, usaremos double no exemplo. 3. Para fazer 0 céleulo, voc multiplicari 7.2 por 1.100, Een seguida atrbuird ase valor a uma varidvel 4, Porfim, exibirio resultado, Aqui est istagem itera do programa Soundjava: i” {6 un rato cio som lave ‘2 eeqmace pars atcangs-to, ~ Glass sound { public atatie vold ainistring argetl) { oystem.out.princinittna Lagnening in * + ast ) 1 5, Compile execute program O resultado a seguir sri exbido: ‘he Lightotng te 7520.0 feat away. 6, Desafio ent voc? pode cael a distneia de um abjeto grande, come uma parede de pedra, medindo o eco, Por exemiplo, se voré batr palmas¢ medir {guano tempo leva pars ouvir o eo, saber o tempo total que o som leva para © volar A diviso dese valor por dais gor tempo que o som leva para se propagar em uma dtegao, Entio, voc poderd usar esse valor para calor Aistinsia do objeto, Modifigue o programa anterior para qucclecalule a dis- tncia, aesumindo que o ntervale de tempo sj igual ao de um ceo. Capttulo 2_Introduc8o a tipos de dads e operadores 39 Literais En Java os tras so valores fos repreventados em sus forma legsvet por hum sos, Por exemplo, 0 nimmero 100 ¢ um literal, Normalmentc, os Ktrais tabs 330 chamados de constantes. Quasesempre.os lteais.c sua alien, ste to inutivos “que eles foram usados de alguma forma por todos os exemplos de programa anterio- ‘es, Agora chesou ahora de serem explicadosFormalmente. (s litera Java podem ser de qualquer um dos tpos de dados pimitivs. A ‘mancira como cada literal rpresentad depend de sox tipo, Como explicadosnte- ‘iormente, constantes do earicetes so delmitadas por aspas simples. Por exer, ‘a eo constants de carcteres, Os ltrs intros so expocficados como niimeros sem componente facio= éris, Por exemplo, 10 ¢- 100 sio litera inteiros. Os literais de pont futuante requerem o uso do pont decimal sezuide pelo components fraeionéro dormer Por exemplo, 1.123 ¢ um literal de ponto latuante, Java também porte 0 uso de notes clea pars rimeros de pono flauante. Por patria, os ters inleiros usam 0 tipo int. Se qusereapeificar um litera Tong, aeescente um lou L,Porexemplo, 12.6 um ing, mas 12L € wn ong, Tamisém ¢ padi ot liteais de ponto flutuants serem de tipo double. Para cspeciticar um literal float acrescente um F ou f& constant. Por exemplo, 10.19F {6de tipo at Embora o itera ineitos crm um veri por pd, eles poem se ati- buldos a variéveis de tipo char, byte ou short contant gue o valor atibuido possa scr ropresentado pelo tipo de destino, Un ital intro sempre pode sor aribuido a ‘uma sav omg, ‘A partir do DK 7, € permitido embutir um ov mais sublnhados em un literal itezo ode ponio atuante, Iso pode facltaraletura de valores compostos por mites dgitos. Quando o literal écompilado, os sublinhados to simplesmentedes- catados, Aqui esté um exempo: Esa linha expocitic o valor 123.451.234, O uso de sublinhidos ¢ partcularmente Util na codificagto de coisas como miimeros de pecas,idemificagdes de clientes © ‘ages de stats que normalmente io cri como ana combinagio de subgrpes dedig Literais hexadecimais, octais e binarios Como vocé deve saber programacio i vezer mas fi sar um sistema numé- rico baseado em 8 ou I6.em ver de 10, O sistema numérica hascado em 8 se chama ‘octal eos digiton de 0 «7. No sistema otal, onimero 1D igual ao Bd sisera ‘decimal, O sistema munerico de base 16 se chama hexadecimal ews ox dgitos de a0 mais as leas Aa F. que representam 10, 11, 12,13. 14¢ 15. Porexemplo, omi- ‘ero hetadesimal 106 o 16 do sistema decimal Devido &frequéncia com que esses dois sistemas numérieus so usados, Java permite a especificagio de Meri nteiros fem hexadecimal e octal em vez de decimal. Um literal hexadecimal deve comegar 40 Jova para inciantes com Ox ou OX (um 720 seguide por um x ou X). Um literal ectal comega com um rer, Veaalguns exemple hex = OXF) // 265 on docttat Java tami permite 0 uso de liters de pomto Qutuante hexadecimals, mas raramente cles so usados "A putt do JDK 7, & posse especificar um literal intro com o uso de bn ios, Para Fazer isso, use um Ob oa OB antes do nero bine, Por exemple, este ‘mr espesificao valor [2 em binsric: Ob1100, Sequéncias de escape de caracteres ‘Ainsergo de constants de caracteres enue aspas simples funciona para a maioria dds caractres imprimiveis, mos alguns caractres, com eto dao, mpiem tm problema espeval quando um editor de texto €usado, Ale disso, outro earee tors especificos, como a aspas simples dupas Gm um significado especial em Java, logo, voe® ao pode uss dreument E por iso que Java forces sean ‘ls de escape, ix veveschamnadas de contanes de caracteres de bara iver, rmostaas na Tae 22. ssussequéncias sb usidas no ugar dos erates que representam. Porexcmplo, esa lnha arbi a eho carstere de tabulago: (O prixine exemplo ait uma agp simples ey ame Literais de strings Javadi suporte a outro ipo de lite: string. Um string ¢ um conjunto de caacte- res inserido em aspas duplas Porexemplo, bela 22 Saqutncae de escape de caracteres ‘Sequéncia de escape Desrinto Xv ‘spas simpos| v Acpas das NY Bara wort v Retoo de caro we wa rs v ‘vango oe pégna ny “ago nonzon Xe Retrocesso \a ‘onstant etal (nd a 6 us constants stl) wenn ‘constantorexadocim (onde xx ua constants hoxaoinat Capttulo 2_Introducs0 a tipos de dados e operadores 44 um string. Voc viv exemplos de strings em muitas das instragies prinn( ) dos «exemplos de programa anteriores ‘Além dos caracterescomans, um teal sting também pode conter uma sais das sequincias de escape que aabei de deserever. Por ceemplo, considere © programa abso, Ele wsa as sequsncias de escape Wt 1) bamenatss a ‘Public static void msin(atrig args) { ‘syeten.out printintrrlet Tine\nsacond Line") fayscem our prsmeamiea\em\ecr) lsyeter.out.pristin(*D\eE\eF") Usa ar et uns ror ) 1 atta para amar a sai, ‘Asside mardi Pergunte ao especialista : Um sting compost por um nico caractere ¢o mnsmo que um itera de earae- ‘ere? Por exemplo, K" 60 mesmo que FR Nto. oct nto dee confusing com carats, Um Mea de erate ree ‘enum ics ead tipo char Um sing contend apoass uma lets coats Sendo um sig. Emibora os Sings sejam composts px carats, els nao sao do meso po. COerve come a sequéacin de escape Ww € wsada pars gerar wma aw links ‘oot no precisa sar varias instrgoes println() para obter uma saida de vtias as Apes corpora au sith mats gb os pnts ode sp ga Um exame mais detalhado das varidveis As varves foram inroduzidas no Captul 1. Aqui as examinaremos mais detalha- ‘damente. Como voce aprendeu, as varfveis wo declaradts com o uso da sepuinte forma de instr, tipo nome-var: conde tipo & tipo de dado da varvele nome-vr € seu nome, Voe® pode de- carat una varivel de qualquer tipo valida, inclusive os tipos simples que acabei de doscrover,e ead vanvel teed tum tipo. Logo, os recursos de uma vanvel sto oterminads por seu tipo. Por excmplo,uina vive de ipo boalean no pode ser ‘sad par armazenar valores de ponto iutuante. Am disso, 0 tipo de una Varivel 42 Jova para inciantes io pose madar durante su tempo de vida. Una varvelimt no pode virar uma vardvel ehar, por exer. in Java, todas as varveis devem se delaras antes de seu us. Ts € ne cessério porque o compilador tem que saber qu tipo de dado wma vardvel con ‘ém ants de poder compilar aproprisdamente qualquer intrugo qu us avril “Também permite que lava execute uma verficasao de pos igoros. Inicializando uma variavel Em geral, devemos dar um valor &varivel antes de usi-a, Unis manera de dar tum Valor a uma vardvel é por uma instgto de aribuigao, como jévimos. Oura € dando um valor nical quando ela ¢doclrada. Para fazer isso, eologue um sinal de Jgualdad eo valor que est seco atribuid aps © nome da varivel. A forma petal be incializaso € mostrad ag tipo var = valor: Nessa linha nafor€o valor dado var quando varé ciada.O valor deve sercompa- tivel com otipo especificado Vea alguns exemplor: nt count = 10; // a = coun um valor sntctad tqual 21a Moat € 1.24) // 1 @ inteiatizama con 2.2 ‘Ao declarer duas ou mis vargvvis do mesmo tipo usando wa lista seporada por vigulas, soe pode datum valor inivil @ uma Ov mais desas Yards. Por exemple: ant a, D8, @= 18, a) // Bec ttm inictatazaeses Nese caso, 6 be € so inciaizadas, Inicializagao dinamica Embora os exemplos anteriores s ren usa constants como iicialzadones, Java permite que as varives Sejm inicializadas dinamicamentc,como uso dequal- {quer expresso vdlda no momento em que a vrivel ¢ declrada, Por exemplo, aqui ‘td um programa cute que calculi volume de umn indo dado o so de sua se saa alta {1 vemonstra @ anicializage ainamica class Dynmast ( ‘Debts seati= wots matn|scring asset) ( ‘nla eaciue = &, belght = oun diate oranianone J) Antotatses yohune sinantcanants 1 Semon Geuble volume = a.taie « rahi * eadlos + haight; ytten.out printin(evolune Je * + votumel ’ [esse exemple, tres varisves lois — rads, height e volume — so clara das. Asc primeiras, radius height, so inicializadas por constants. No eatanto, Capttulo 2_Introduc30 a tipos de dados e operadores 43 volume ¢inicializada com o volume do ciindr. ponto-chave aqui & ques expres- so de inicializagdo pode usar qualquer elemento vilido no momento da niciliza- io, nclusivechamadasa meted, outs varidves ou trai. Escopo e tempo de vida das varidveis ‘Aid agora ca a vio que unas foram delaras ino do modo tain, Pr, Java porte qc as vidi sjam dstarades dent de qulqae (Hoes Coneyerplete ne Copeto I un Baco coors cn a clare te io ture termina com uma chave de fechamento.O bloc define um eopo. Logo. ‘cre ut tos nis um novo blco star ano um nove ecu, Un ep determina que objeto estar ies par ous pares de seu programa Tame eatin eepce vader hes ‘Guta linguagens de computador definm dans aegrias gris de esopox fol» os, nts anette ce yon madcap {aro escopos em Java, Os excoos mas importants em ava soos dfnidos por ims lasso definidosporum mnciodo Una dscasso sobre oescop das clases cn Secs dedarites Gene) des prs ep, pela ce fever deserts no oo or cogent, exaninarmGs ants o exces defini orca dentro dum mod ‘Geseopo deer pr entmd cme orn mu cvs iret Hen: tuto, se ett minds ter atmos, cles tev inde dente do capo do meu. Cao ors mic a vil dott nto doin esos point visas Gn cts) por um cdigo dein fr dene cnsopo. Lope, sumed ‘Wed inte connie ie ten anos ene eo a ale retependo- «cons modiieago cu acess nt aor, Na verde, 5 eps Tiss Exar alae do mespetnee (Oh ecope fon er ethan, ar ipl, pn gin woe Bi toco de etgo, ena cdo um novo escopo uinindo Quand iss ome, © tscop enero coloba sooo iero, Out bjt dando 0 apo extcmo por ser ists por um igo qu extn der do excopo inten, No Catan, oimerso nia ¢yerdasir. Objosdesardes dno do coco mero 150 pore er visto ora dle ars xen fio don exces aiid, comer o program spi 17 wonanatza 0 vacepe da B1oco iase ceopeDene | ponise static vata mesa(ateiog 29319) | 0) (J) Sateta nove axcope nt y = 20) // connecida apenas nesce bi00 1) tanto x quanto y ste comectiae gut 44 Jova para inciantes eoyen ) 1p 2905 1/ Ser nao Socactan age ah 1/ x ainda € contectaa aqot. Syeten.cut printini"e 18°" + 9: ' } Como 0s comentiios inicam, a varidve x € declarad n nico do escape de smain() © pode ser acessada por qualquer c6digo subsequentedesse mstedo, Dentro do blocoif.y¢declarada.Jé que um bloco define um escopo.y 56 pode scr vist por ‘egos dese bloco.E por isso que fora de seu blaco, ina y = 100; & desaivada por um comentéro, Se voce remover osfmbolo de coment, um em de eompi Jago ocorrerd,porgue nto pode ser vista fora de seu bloco. Dentro do boce if, x pede serusada porgue o cédigo de um bloco (isto é, de um escopo aninhado) tem ‘cess as varidves declaradas por um escapo exter, Deniro de um bloco, a varves poem ser declradas em qualquer ponto, mas s6 si vidas apés sorem declaradas. Pertanto, se voc definir uma varvel no inicio de um metodo, elt estarédisponve! para tode 0 cédigo desse metodo. Inver- mente se decTarar uma varivel no fim de um bloco ela mio ted tlidade, porque enum eidigo poder acesi-la. ‘Aqui ests outro ponte qu deve ser lembrado: as vardves so criadas quando leangamos seu escopo edesiuidas quando safmos dele. Ov sj, uma varvel mio mane seu valor quando tive sao do escopo. Logo, a vriveis declares dent ‘dem meted so materio seas valores enrechamads «esse meted. Alem disso, tama varigvel delarada dentro de um ble perder seu valor apo bloso scr deixa- ‘do, Ptantn, oteape de va de uma varsel ext confinada an se escopo. Se a declaragio de varivel inclu um nicilizaor, essa varvel set rein Fizada sempre que entra no bloco em que ela & deslarada, Por exemple, cons dere o programa a segue Uy seoonetea © tempo de vids de un variivel clase varraitzeno { PLE stati veld msn sertng areal) | forte = 0; x31 20s) ( nt y = 2) //'y eerd Inictatizaga enpre que entrarvos no bioce syiten.out printin(sy a: " + 9); // ean Inna sanpee exine 1 ysten.out.printin(ry 4a now © + y) ' ' ) A sada pera por esse programa € mosiada aq yaaa Capttulo 2_Introduc8o a tipos de dados e operadores 45 y ie mows 200 yas Como voeé pode ver y ¢ reinicializada com —1 sempre que entramos no lago for Jmerno. Anda que depois ela reeebao valor 100, ese valor é perio. 114 uma pecularidade nas regs de excopa lava que deve surpreend-o: emy- ‘hora os blocs possam ser ands, nenhura vrivel declarada dentro de umn es- ‘cope into pods te o mismo nome de una varaveldeclarada por um escopa ex- terno, Por excimplo,o programa a seguir, que tena declarar duas variveisseparadas ‘em 0 mesmo nome, no ser eompilado lun aseope iacaruo com o aacuo noms de waa, Gersniaa on um excopo extern, ” clase nestvar ( ‘pobiic static void masn(atring args) | ortcount = 1) count « 10) count = coune+2) | ‘yeten.out.peintin(eteia ie couts = + count); ‘Nao pode ear eaunt nar nt county // tnvansdors + <——— parm afl oe System. ct printin(uuhin progean 42 sx error! } ) ) Se voeé tem exporiéncia em C/C++, sabe que nfo hi restriges para os no- mes dados a varidves decaradas em um escapo intern, Logo, em CIC + adecla- ago de count dentro do bloco do Iago For extemo €perfetamente vida e esse tipo de declaasdo oculta a vardvel extern, Os projelistas do Java acharam que ‘essa ocultagdo de nome podcra evar failmente a eros de programasao ¢ nfo a permitiram. Operadores Java force am ambient ico em operadores. Um oper um sib gue so- ta samara a npeepo toto oo get apis. ly wes pers te pede emt erica iin less i ‘esha dae epi econ raison en in Ser pes Ee capo examined cr operate udiicos laa o gins. Ted, siamremeso open du gi. O aera hia sear operas er pemin toro peseriorman 46 Jova para inciantes Operadores aritméticos Java define os operadores ariméticos a seguir ‘gio (também mals ura) ‘Subta9s0 (também menos und) utipicago Dvisa0 Mio (Os operadores +, ~* e Tuncionsmn em Java da mesma maneirs que em qua «quer oa linguager de computador (ou em algebra. les osm ser aplicados a (qualguer tipo de dado namrio interno, Tunbém poder ser usados em objetos de tipo char Embora as agdes das operadores aitméticos sejam coahecides por todos 03 Jeitores, algunas siuagdesespecais pedem explicasao, Primero, lembre-se de que (quando /¢aplicado a um intro, o resto gerado pela divisio € truncado; por exem- plo, 103 ser igual a3 na divi de inteitos, Voe8 pode obter a resto desea divisio twsndo o opetidor de médulo %. Ele funciona em fava da mesma forma que em toutes inguagens: gerando o resto de ums divsio de inteitos. Por exemple, 10 % $3 igual aI. Em java, o operador % pode ser apliado a tipos inteiras¢ de pont ‘Muquante. Logo, 10.0 4 2.0 tambon gual «1.0 programa «seguir demons ‘peradar de mda, 11 sewonetra 0 operator ¥ (ase uoctene ( Public static vold maintetring arge(l¥ { sromatt = 10/3; arenuit = 20.0 / 3.0 syeten.cut.printia(norult sad sonatnder of 20.0 /-3.01 * $ 46 Jova para inciantes Operadores aritméticos Java define os operadores ariméticos a seguir ‘gio (também mals ura) ‘Subta9s0 (também menos und) utipicago Dvisa0 Mio (Os operadores +, ~* e Tuncionsmn em Java da mesma maneirs que em qua «quer oa linguager de computador (ou em algebra. les osm ser aplicados a (qualguer tipo de dado namrio interno, Tunbém poder ser usados em objetos de tipo char Embora as agdes das operadores aitméticos sejam coahecides por todos 03 Jeitores, algunas siuagdesespecais pedem explicasao, Primero, lembre-se de que (quando /¢aplicado a um intro, o resto gerado pela divisio € truncado; por exem- plo, 103 ser igual a3 na divi de inteitos, Voe8 pode obter a resto desea divisio twsndo o opetidor de médulo %. Ele funciona em fava da mesma forma que em toutes inguagens: gerando o resto de ums divsio de inteitos. Por exemple, 10 % $3 igual aI. Em java, o operador % pode ser apliado a tipos inteiras¢ de pont ‘Muquante. Logo, 10.0 4 2.0 tambon gual «1.0 programa «seguir demons ‘peradar de mda, 11 sewonetra 0 operator ¥ (ase uoctene ( Public static vold maintetring arge(l¥ { sromatt = 10/3; arenuit = 20.0 / 3.0 syeten.cut.printia(norult sad sonatnder of 20.0 /-3.01 * $ Capttulo 2_Introduc80 a tipos de dados e operadores 47 A salda do programa ¢ dad a seguir dorslt and ronstader of 28 / 3021 sagult and roraindar of 38.0 / 3.0: 3.azz32u2333332138 2.0 Como voce pode ver, 0 operador gera um reso ipual | para operagies de tipos inizos ede pono flatuamt, Incremento e decremento Inteoduzidas no Captule |, ++ ¢ ~~ s30 0 operadores Java de incremento © de- remento. Como veremio, cles tm algunas propriedades expecias que os torn ‘nuit interessantes. Comeeemas examinando exatamente o que es operadores de increment ¢decremento faze ( operadorde incremento adiciona {a scu operando ode decrement subtest Loge, omesmo gue omesmo que Tanto. operador de ineremento quanto ode decremento podem precede (pre- fear eu vi aps (postxaro operando. Por exemplo, pode ser escrito como srs J toma pretixaaa scr 11 forma postinade No cxemplo anterior, no ha difereng seo increment € aplicado como wm prefixo ou um posfixo, No eatanto, quando um incremento ou decremento éusado como parte de uma expressio maior, hi uma dferenga imponante. Quando um ope- rndor de incremento ou decremento precede seu operand, Java execula a eperagao ‘orrespnente antes de blero valor doperando a crusade plo rest dn expres- ‘0. So 0 operador ver apés seu opcrando, Java ober 0 valor do operando anes de ‘le er inerementado os decrementad, Considor osoguimts: 48 Jova para inciantes [Nesse caso, y seri configurado com Il. Noestanto, seo céiigo for eserio como you enti y se configurado com 10 Nos doise4s0s, x éconfigurado corn 11; diteren (46 quando iso ocore, Ha vantagens sigificativas em padcrmos controlar quando ‘operas de incremento ow decrement deve ocr Operadores relacionais e légicos Nos terms aperador relacionale eperadr liico,relacional se reere wos relacio- ramentor ques valores podem er ans com ox out, gic we refere is rans ‘como o¢ valores verdadeiae falso podem estar canectados. 1 que ox operadores felacionsis produzem resltados verdadeizos ot flsos, com fequénca trabalham ‘com os operadores ligicos.Portamt, eles sero discutdos juntos aqui (Os operadores relacionuis si mostradcs agus Os operadores Iigicos so mostrads abi: ‘Operador ——_Signtieado 1 on oR (existe OF) 0 OR oe curioexeuto AND de cetocirato ' Nor (resultado dos operadores relaconas kigicos¢ ui valor boolean. [Em Java, podemos comprar todos ox objtos para ver eso iva ou dferen- tex com o node ==e I=. No entano, cs operadores de comparsgio <, >, <= a >= 56 podem ser apicados aos tps que do Suporte a um reacionamemt sequencia Logo, os operadores rlacionais podem ser aplicados odes os tpos numricos © 30 tipo char. Porc, valores de tipo boolean x podem ser comparados quanto igual- Capttulo 2_Introducso a tipos de dados e operadores 49 dade ow difereaga, ji que os valores true c false no so sequencais. Por exerplo, true fale no tem sinificado em Java. ‘Quanto sos operadores ligicos, os operandes devem ser de tipo boolean « & resultado de uma operacio l6gica€ de tipo boolean. Os operadores légicos &, |," © ! dio suport is operas 6gicas hésicas AND, OR, XOR e NOT, de acordo coma tabela-verdae a seguir: , 4 rr Verio faio——Flso—«Weriagoto Verde Fao Faso YoradiroFtso——_asoor0Vonagbo_ radso Verio YeradroWibdsio Varadero Falko ‘Fao Como a tabela mostra, o resultado de uma operapio exclusive OR ¢ verdadiso quando exatamente um, © apenas ui, operande ¢ verdadero, ‘Aqui est um programa que demonstra vérios dos operadores relacionas © i- sicos 1} venenstra 09 operadores relacionale « 1ég%c0a Glass betlegces | public static votd saia(Gtsing argell! { iat td yeu See c's) syscom.oee preneia gis < 34); se). eof) system out printin(s <3") ati. 12 3) systomout.prantin(st t= Jv; At(1 == J) eyatom.out prancinc-tnte woa't exeout se). 00 9) system our proningventa won't oxen 22). 2 3] syeeomrout priatia(tehie won't exacatet| Seb. £82) syatan out printin|tensa wante exacuter) s£/0tp3 4 52)) aysten.cut-printin|* (on £22) Se true) tir | b2) syacem.out.printin(sbr | b2 10 true"); stp. * na) sparen out pristine * pa ta trust), A safda do programa 6 dad a seguir 4 sed 50 Java para inciantes aed sn £32) 46 crue bi | be 30 erve Operadores légicos de curto-circuito Java foenoce verses expeciais de curto-cicuito de seus operadores Wigicos AND © OR que podem ser usadas para pradurir cédigo mais efisente Para entender 0 pporqué, comsidereo seguinte, Em uma operagao AND, so primsiro operando for falso, «resultado seri fulso no importando o valor do segunda operando, Em uma loperagio OR, seo primecito operando for verdadero, o estado da operasio ser ‘vendadeira no importando valor do segundo opersnda, Log, weses das casos, nh necessidade de air segundo operand. Quand no waa 0 epee ‘operande, esonomizamos tempo e wn cGdigo mas eicient €prodzido, ‘O operadoe AND de curt cicuito & & © 0 operdor OR de cuto-circito & I. Scus equvalentes comuns so & e| A inca diferensa entre as verses eomum e ‘de cura -irevito€ que a verso amu sempre valia eda operand e a versio de ‘crto-crcuto x avaliao segundo aperanda quand necessio. ‘Aqui esti um programa que demonstra ooperador AND de curto-creito. programa determina seo valor ded € um fator de n Ee fz isso executando uma operoyio de médulo. Seo resto de n/ for zero, ented é um ftor. No entanto, ji {ue a eperacio de médulo envelve uma divisto, versio decune-cireuito de AND ‘tad para pedir a ocomdncia de um enra de divisio po 200. Jj senonaten os cparadcres de curte-civoutts. class spe [ ‘Public totic void watn(atring argetlh { int ns 3, Danae ene oa. & BSE SE + sak = 95 14 contigura a con sexo J) 38 que 3 6 soul = sare, 2 seqsnds operando no 6 avalsase tea iso ae ip ba) =~ 3) operator cats. syiten.ovtprintin(@ + ~ Ze 8 factor of + + aj -ekello ies ume ido por zen (+ rente a eens coles son o parser de custo-cizeuite, Zao caueurd un ofz0 do divisdo por 2010. ” aor 28 88 1£(0 109 & (m8) == 9) ¢——_______—roessoes sto Systen.cot printinja «wae a factor et © « nl Binge peminso ' ‘qe os ua ; {veo pr a. Capftulo 2_IntroducSo a tipos de dados e operadores 5. Para impr uma divin por zero, primeio a nstusto if veritia sed ¢ igual a zero, Se foro operador AND de curt-crcsito sera interrompid nesse pono © no exevutar a operago de médule Portant, no primeiro teste, dé igual a Dea perso de médulo¢exccutada. O segundo test fala, porque dé configurado com 2210 € a operagio de médlo¢ ignoeads. 0 que evita um emo de divisio por 2200. Para conclu, aperador AND comm & wad. sw Fz-com ge os des operands sj avai, wu leva um ero de tempo de exeeusso quando ocome a visio ‘ma skima coisa: a especificagto formal de Java chama os operadores de curto-creuito de operadores conltional-ore conditiona-and, mas normalmente & sad o terme “cute iri” O operador de atribuigao ‘Voc vem ustndo 0 operadar de atibuig desde o Caputo 1. Agora & toes de 0 examinarmos formalmente, © operador de aribuigdo &0 sina de jal simples, =. [Ess operader funciona ent Java de modo bem parecide com que funciona ct gi quer obtr inguagem de computador Esta ¢ sua forma ger: sar= express ‘Aqui,o ipo de var deve ser compat com o tipo de eyes, (0 operador de atibuigio em uma propriedade interessante que tlvez voc ‘ao conga: ele permite a ciagao de uma cadia de aribuigbes. Por exemplo con- sere este fragmento: X= y= 100; // eoatiguea x, y © 2 con 100 le configura as vrvcis x,y © com 100 usando mesma instroso. Iso funciona ye = € um operador que forneceo valor da expresso do lado dteito. Logo, © valor de = 100 ¢ 100, que € entao atribudo ay, que por sta vez €atribuido ax. O so de una “eadcia de ribo” € uma mancira ficil de configurar um grupo de ‘ardveis com um valor eon. Atribuigdes abreviadas Java fornece operadores especie atrbuigdo abreviada que simpiieam a odi- ‘casio de corte instrgBes de atribuigao, Comecemos com umn exerplo. A instag8o do atibuigo mostrada ages, pode sr escrita, com o uso da atibuigd abveviada Java, come: 52__ Java para inciantes Pergunte ao especialista Pr 44 quo os operadores decurto-treulta so, em alguns cass, mals fetes do “que seus equialentescomuns, porque Java oferece os operadores AND e OR comune? Em alguns aos, oe pose querer ques dis operands dumm pero AND ‘OR aja vain devade a fei clutsaeproduidos, Consens sei ase Staateocte Pte atatlc rod edtatesing nope) [ 1s haa 5 € socrenentca me ie ‘Syoten ot printin(hia wt be Alaplayed) 1+ aes cabo, 1 nto 6 taereniotads soci’ . , ‘Como os comets indica primeira nso if 1 incerta eno ‘ou nao iastuete tom sce No ental, quando w operat de carci & ‘sade, a vardvel mio ¢incremeatada quando primeio operand € flo. lie20 ‘apredida wl ¢ ade que se seu codigo espera que operand do lado dato de una ‘pero AND 04 OR sj avid, ox deve war Yeres dss pens ge ‘to seam de curt eect ( par de operadores += soicta so sompilador que atrbus ax o valor de x mais 10. ‘Veje outraexemplo, A instrugto igual a ‘Ass instrugbesaibem a x oval dex mene 100, [Ena uribuigo abreviad funciona para todos os operadores bindros em Java (iso ¢, 0s que requerem dos operandos)A forma geal daaribuicio abreviada € var op = express, Capttulo 2_IntrodugSo a tipos de dados e operadores 53 Loge, os operadores aritmsticos ¢ légicos de atribuigto abreviada slo 08 seguints: ‘Ki que esses operadores combinam uma operagio com uma ibuiao, so frmal- ‘mente chamados de cperadares de airbuigo composing. Os operadores de atibuigdo composts fornecem das vntagens, Fi prime luge, sto mais compacts do que seus quivalentes no abreviados", Em segundo Jar, em alguns casos, so mais cicientes. Poranto, écomum vermes os operadores ‘de atribuigSo composts sendo usados em programas Java escitos profisionalmente Conversao de tipos em atribuicdes [Bn progrumago,¢ comum arbuir um tipo de varivel a outro. Por exemplo, vo? podria atsibuirum valor int a wna varidse Moat, como mostra aqui fo) // aston an int bo a Host Quando tipos compatives so combinados em uma acbuigio, valor do lado diri- 10 € convetdo automaticamente para 0 tip do lado esqucrdo, Logo, no fragmento anterior, o valor do & converte pars ura flat e enti atrihaie a . No enanto, ‘devia’ rigoroa verificagio de pos de Juv, nem tos os tipo 80 compave, assim nem todas as converses de tipo so permiidasimpliciamente. Por exerplo, boolean e int nao si compativcs. ‘Se um ipo de dado for atid a win vardvel de outro tipo, uma conversa de tipos awtomtica cored and + Os dais tposforem compat, + O ipo de destino for maior que. deerigem, (Quando esas dua condigdes st stndidas, acore ms comersdo ampliadara. Por ‘exemple, o tipo int & sempre sificentemente grande para comer todos os valores Dyte vilidos, tnt int quanto byte so tipos ines, logo, uma converse automi- sea de byte para int pode ser apicuda Em converses ampliadoeas, os tpos numérieos inclusive os ips inti ede ponte flatuant, so compatives, Por eterplo,o programa a seguir € perfeitamente ‘ldo, j que a wansformagio de long em double é uma conversao ammpliadora que Sexecttada sttomaticamente 7 EN ER clase ut { pibiic static votd naia‘etxing argel2) 4 54 Jova para inciantes 9 = by comer toi lng a nt, systen.out printin(sn and a. + + a = 6 Diy Embora hajaa comersio autométia de Tong para double, noha conversio automstica de double para long. a quc esa nioé uma conversae ampliadra. Logo, ‘verso a seguir do programa anterior invalid Uy s46 wees programa sto aerk comptlate. * clase ttn ( ‘Public atatic vold wain string arga‘t? { ong 1 1S bp /) imeditot | —— Nia scorns oe dole prs one pyeten.out.printia(ta and ot + ke t+ Dy [io hi converses attomsiticas de tipos numéricos para char ow boolean, Além dso, char boolean no sS0 compatfves. Noentant, um itr inteiro pe sr abu a char, Convertendo tipos incompativeis [Embora as converses de tiposautomsticas sear tis, elas no atender todas as ecessidades de programagio, porque 6 se apicam a conversbes ampliadoras entre tipos compatives. Em tds ox Outros cass, ved deve empeg uma cers (cst. ‘A coergo 6 uma instrug dada oo compilacor pata converto de un tipo em out Logo ela volicits uma converse de ipo explicit, Una corso tem eta forma ger: (cpo-destina)expressd0 Aqui tipo destin inca o ipo para 0 gual queremes converter a expresso expecta da: Porexcmplo.sevocéquiser converter ope da expresso paraimt, pode escrever a int) ey 9) [No exemplo, ainda que x¢ ysejam de tipo double, a coers3o comerterso resultado ‘dv expresso para int. Os parénteses que delimitam wy sho necessrio. Caro com trio, acoergio para ints seria aplcada ax. mio ao resultado da divisio, Nesse 450, ergo ¢ necesséra porque no hi conversio automatica de double para int. Capttulo 2_Introduc3o a tipos de dados e operadores 55 Ck sg cma ome mtr noma pith Sarge seep gp fiche crept meine oe ee Tsetse Stat a negara efeteaceanat incall treacle furs er trate onal 5G papnal apt eeeUpetcomre deepin = iy men sn oy Zn manta se = my a cored tuneamena nessa comers, 4 = UML tx / ny // comvecte double on int ‘syoten.out printin(roaveger cutcane of x /-ys 7 4 thy 2 = 109) bon pert de ormactes aga b= woyte) ty «Unt pot cantar oer 100, system out pristln(evalue of b> + Diy ean Desta oe porta de ntomaos bb = (ytd t; Un at nop cone vl 267 yaten out printin(evalne of br? > Biv be any / asczr para x (op = (one) by cargo ee tps nope System out prineiniten: * «em ‘A sada do programa 6 dada a seguir ieages court £27709 [No programs, a coergo do ey) par intrsula no truncamento do componcn- te fracionirioe informagSes so perdias. Fm seguda, no oeorre nenhurma pera de informago qardo b recebe 0 valor 100 porque um Byte pale contro val 10. [No entant, quindo ¢ feta a tentatvn de atriir a b a valor 257. ocore peda de informagdes porque 257 excode o valor méximo deur byte. Para coneluir enhuma informagio € peri, mas uma coergio &necessria na arbuigao de umn valor byte sum char. 56 Java para inciantes Precedéncia de operadores ‘A Tabela 2-3 mosras ordem de precedéncia de todos os operadores Java, dt ms ‘sis baixa, Esa tabela inclu virios operadores que saa discus poste- Fiormente nest ito. Emborasejam tecnicamente delimitadores, [].()e também podem agir como operadores. Com essa incumbéncia, eles tram a precedénci ‘mais ala bola 23 A pocodancia dos operaderos Java + (poafuo) ~= (posto) + (prft0), == (pefto) ' “stundio) = (uno) (como eto) 3 7 * K 1 a8 Tabela-verdade para os operadores légicos Neste projet, vee cra um programa para ei ala Sonic can opeetres gies er peter pees ol tas da abel quem lias. proto far wo de vroreuton bonds nest capt, inclusive rads equi de escape iva eo operadores Kgkos. Ele tami na dregs de precede ene opera atmo # oF fades ogi 4. Crie um nove arguivo cama LagicalpTable ara Piagichiogatiie’y Capttulo 2_Introducao a tipos de dados e operadores 57 2. A fim de asegurar que as colunas fiquem alinhaas, vos? usar a sequéncia de escape Vt para embutirtabulagBes em cada string de sada, Por exemplo, a instru print) exe ocabeyalho da abea syoten. out. princin t= \ta\eaKo\to=\OxOR\ ROT) 8. Cada linha subsoquente da tala usar tabulages para que o resultado de eada ‘operacio sejaposicionad sob o ttle propria 4, Aqui esta lstagem inti do programa LogicalOpTable java. Insrs-o agora. // sate sata 2.2. una tabela verdad pas op operadsves Issteaa clase tegicaisptable | piblic statte vold maincetzing arget) ‘eystom. cut prantin *P\EQ\tAND\EOR\EHOR\EHOT®) System. cut prantip + *\cr +g S\8; system cut prantiipeg) + s\e! + (pla + *\ety System cut printlaipta) «Me + |p) fsyotew cut prantip + wer +g et: ssyreom our prsne| peg] © Nets pig = ety syrtem.cut printialip'a) ME + (iB P= taloe) = truss Syston cut prsntip \et sg mien) ssyrtom.cut print | (pig) « Wet s (pial = Neth syotem out prantintip™gh + set + Uphay Syetom.cut.printip + er sg omen) ‘syste cut prantripeg) + “Ver + (pla + *Aerhy System cor preneintips) © AEE = BHD ) ’ COnserve os parénteses que dlimitam as operagdesIpicas dentro das inst- Ges printla). les sdo necesirios devide a precedéncia dos operalores Java. ( operador+ tem procedéncia mais alta do que os operadores lgicos 5. Compile e execute o programa. A tabelaa seguir ser exbida. ? er 58 Jova para inciantes 6, Porsua pripria conta ente moxlficaro programa para que ele use eexiba uns lezerosem vez de tue e false, Iso pode dar um pouco mais de trabalho do que esperada! Expressées Os operadores, as atv eos itera so compenentes de expresses. Voce deve oo secer a forma gral de uma expresso por ouzasexperiéncias gue teve em programa ‘lou pela gsbra. No entanto, alguns aspectos das expresses ser discos gore. Conversao de tipos em expressdes DDeniro de uma expresso, é porafvel usar dois ou mais tipos de dados diferentes contanto que cles seam compatves, Por exemplo, vor® pode usar short e long ‘dentro de uma expresso porsue os dos so tpos numricos. Quando tips de dads Aieremcs so usados em uma express, todos so converidos para 0 mesmo ip. 1ss0 feito com 0 uso das regras de promogao de pos de Sava, Primeizo texas os valores char, byte e short sio promovidos aint. Em sep da, se um operando for long a expresso intra sera promovida «Hom. Se wm ope- ‘ado foe Moat expresso inca serépromovida « Moat Se algum dos operands for double, o reuse double "Eimportanteeotender que a promogaes depos 36 so aplicadas aos valores usados quando uma express éavaliada. Por exemplo s o valor de uma varidvel byte for peomovido ait denzo de uma expresso, foes dela, a varivel eatinuars endo byte. A promogio depos afta a avalagio de uma expess. [No entanto, a promogdo de tipos pode levar a resllados inesperados, Por exomplo, quando uma operagoaritmstica envolve dois valores byte, ocome se guint soyucnca: primeira os aperandos byte sso promovidos ait Depois oeore a operagao, gerando um resultado int. Loge, o resulta de uma operagao que envolve dois valces byte serum int. Isso io era esperado. Considereo programa a seguir: 11 0 sneeperado en una prowcdo: class erenbeno | TPoolie static votd wasn(steing araait) | byte No €nevessrie v coro pou ores j8 eed a it fits 1) conto, mo 6 nocessiris una ccersto au 6 noc ume coer pra ari uit a. by feyrey (oS on; // coarote nec Capttulo 2_Introduc3o a tipos de dads e operadores 59 snout printin(*s and bev de 8 ts Bie ‘Mesto parecendo crndo, nenhuma coero énecessri na arbuigdo de WX porque b promovid a int quando a expresso €avaliada. No entanto, quan- ‘do voxd tentartribuir bb a, precisir de uma coer — novament para tel Lembre-s disso se receher mensagens de erro inesperadas de incompatbilidade de tiposrefereness expresses que de outa forma estarim pefetaments comets. Situages como essa amibém acarem em operagtes com cha, Por exempla, 1 fragmenta seg, w coerga0 novamente pra cha énecessria devo A promo ‘io de chl ech? int dentro da expresso, ‘Sem a coero,o resulta da soma de chil eh? sera de ipo it, que mo pode ser strbwido am ear. ‘As coergies nao so ites apenas na converso etre ipos em uma arbi, Por exemplo,consdereo programa absixo, Ele usa uma voergio para double 3 fmt dd obte um componente facionrio de uma divi que seria de incios. 11 vest ma. conrgto. clase vrocest ( ‘public static void mesniatring args) | forth =o) bes) tL ystenout.printinit = # / a" 24/3) © (deste) 1 / 31 ‘A saida do programa 6 mostrada aqui: oyae O23 wien eexceions: 08 ayaa 1/3 itn tractions: o.s3mna3309509 aya 2 / 3 with Fractions: o.esssesesessessee pyar 2/3 with fractions: 2.0 60 Jova para inciantes spat 4) wien tractiones 2.9922239993929909 Espacamento e parénteses ‘Ua expresso em Java peter abulages cenpagos pra tonla mii give, Por xemplo, as daas expresses a sogir so iguas, mas a segunda € mas fide ler seablyslaar/ny oy ys eae, (Os paréneses umentam a precedéncia das operasBes conidas dentro dele, como na dlgebra. Oso de paréntesesadcionas no causaré eros o retard & execu da expresso, E reeomendivelo uso de parénteses para que wonlem exata ‘da valiagdofigue mais clara, tanto para voce quanto para as pessoas que precisarem ‘entender seu programa postericrmente. Por exemplo, qual das das expresses abai- No mais cl dele? xe y/-uattompeaa7 = y/s) = (asetempl «27 ov Teste do Capitulo 2 1. Porque Jon ejecta gamete otro €'componameo de sus tn ime 2. hal oo de caratre mado om Jae em ue le deem do ipo de Set oak pa caving oe eenet 12, Um valor boolean pode tro valor que voeéquiser jé que qualquer valor dfe- rente de zero é verdadero. Verdadeito ot fl? 4 Dada esta sada, usando um dnic string. moste a insrugto printin) que aproduzi. 5. Oquees ral neste fragmento? feria = a) Le toy tH ) Syeten.outprintin ("cum 191 % + eum 6, Expligue a diferonga entre as formas prefixada ¢ porfixada do operador de BEB ee Capttulo 2_Introduc8o a tipos de dados e operadores 64 “Moire como um AND de curto-circita pode ser usido para impedir um ero de divi por ze Em uma expressio, aque tipo so promovides byte c short? En geral, quando uns coergo & necesita? [Bsceva um peograma quc enconte tos os nsimtosprimios entre 2 100. © se de paréntesesadicionsisafetao desemspenbo do programa’? ‘Um boca define un essopo? Capitulo 3 Instrugdes de controle de programa Capttulo 3_Instugdes de controle de programa 63. Principals habilidades e conceitos © Tnserircarscteresu partir do teclado © Saber a forma completa da instrugo Wf © Usara instnigio switch, © Saber a forma completa do lago for © Usaro Lago whil © Usaro lago do-while © Usar break para sir de um lage » Usar break como uma forma de goto Aplicar continue Aninhar lagos este capiulo,voot aponderd a instugBes que controlam o xo de exceusso do programa. Hi ds eategoris de insrugies de controle de program ns- tsuyies de slecdo, gue incluem if switch; instrugdes de ierasdo, que incluem 10s Lagos for. while c do-while:¢instragées de salto. que inclem break. continue return. Exceto por return, que ser diseutidaposteiormente no ito, a8 outeas intrugdes de contrle, inclusive as instrugdes i efor sobre us quis voce jf te tum pequcna introdusio, sero examinadss com detalhes aqui. O capitulo comesa cxplisando como podemosforeceralgums entradas simples « partir do teclado Caracteres de entrada do teclado Antes de examina a insrugies de controle Java, faremos um pequeno desvio per tind que voed excreva programas iterative, AUéo momento os exemplos de programa deste live exibiun iformasées para o uso som receé-las do us io. Logo, vod tem usado a stda de console mas no a entrada de console (telado). ‘Aazio€prineipalente porque os meios de entrada er Java dependem fazer aso Ae recursos que 36 ero disctides posterioemente no liv. Alem diss, a mien dos progeamts ¢ applets Java do mundo ral & gifica e bascaca em janelas © ne Iuseada om console. Paranto, no ser feito muito uso da entrada de console neste livre. Hi, poem, un tipo de entrada de console que € reltvamente fic de wae Icitura de um caratee a partir do teclad J8 que varios dos exemplos deste capt {arto uso desse recurso, le ser diseutido aqui, ara ler um carter a ptr do tela usaremios System.in.read) System. in complementa Systemanat E 0 objeto de enrada Figado ao teclado, O metodo 64 Jova para inciantes read{ ) espera até 6 usuério pressonar uma tecla © entio reterna 0 resultado. O caractere €retornadl como um nei, log, deve ser conertdo para um ear para ‘er atribuid aura varive cha. Por pari, entrada de consoles um fr de linha. Aqui terma bufer se referea‘uma pequena part da meméria que ¢usada prs armazenar caractres antes de serem dos pelo programa. Ness ens0, buffer armazena uma linha de texto completa. Como resultado, woo? deve pressionar [ENTER antes de qualquer caactrecigtado ser envi para o programa. A sepuit, temo um programa que Ié um caracere a pate da telad, Ui 1 om caractare no teclase, clase win { [pobiie atatic votd masn(steing argait) fhooun fuvs-t0.2obeaest son | systen.cut print (Wprese 4 key followed by ANTERS 1; fh = (enari syecon.tn.reaa)s £/ obtéa un char Ld um cactre no tecase syaten.cut printin(*Yoor key sa: * + chi; ‘Aqui est. um exemplo de execugto: brane 2 nay tolowsd By ANTER. © [No programs, observe que main(}comega assim: public stat ie votd maintstring argett) throes java.to.f0Bxceptscn { 1 que System in.ead{ ) esti sendo usado,o programa deve espeificar a clsusula throws javaioJOException. Hssa linha ¢ necessria para tatar ers de entrada. la fa parte do mecanismno de tratamento de exeeg bes de Java, que € dseuti m0 Capitulo 9. Por enganto, ose preocupe com seu significado exato, ( fato de System.in usar um buffer de linha pode ser fonte de aborrecimen- tos. Quando pressionarmos ENTER, uma sequénciatetoro de carofalimentaio de linha ¢ inser no Moxa de ena. Am disso, eses eracteresfcam pendenies no buffer de entada a seem lidos. Loge, em alguns aplicatives, podemos ter de emové-s lendo-o8) antes da préxima operagio de entrada. Vercmos um exemple posteriormente neste cpu, A instrugao if 0 Capitulo | intoduri a instrupao if Ela sera examinada com detalhes agora. A forma completa da instr if iffeondigao) instru: else instruc: Capttulo 3_Instugdes de controle de programa 65. ‘onde os alvos de if ese so instrustisindivduis. A cléosula else € opeional. Ox lvos tanto de if quant de else podem ser blocos de instrugies, A Forma geral de i ‘sand locos de instr, € coda) sequence isiruges by ( sequncia de instruges 1 Se a expressio condiconal for verdadeira, o avo de i seri exeeuad, caso com tee, se houver,oalvo de else seri cxecutado. Nunca ambos serio exccutades. A expresso condicional qve contol if deve produzie um resultado boolean. ara demonstra ie vias outrasinstrydes de controle), erirernos e deven- volveremos um jogo de adivinhao computadorizado simples que seria apropriado para cransas mais novas. Na primcra verso do jogo, o programa pede ao jopador fms letra entree Z. Seo jogadorpressionar a ets coreta no teclado, programa responders exibindo a mensagem * Right *, 0 eédizo € mostra aba 1) pasytnne & votre ao 300. ‘dans oie | (public static vold muta(stelag arge(0) ‘owe Java. to. roexcept ion | ssyeton.out printin(+i/m thinking of a letter between a and 2.) syocen.out rine scan you guess tt» 2k = (ober) systentn.saadi) // 18 um char no teciedo newer) systen.cut.peintin(** Right s4*17 se programa interaze com o jogadore end Te um caratere no telado, ‘Usando uma insiugio if, ele compara o caractere com a resposta que, nesse C080, 6K. Se K for inseido, mensagcm seréexibida, Quando voostesar © programa, Jembre-se de queo K deve ser inserido.em maidscua. Paraavangarmes um pouco main joo deaiviahago, a prima versio ust ‘se para exibi ums mensagem quando lea era ¢exolhid, 1H) aaivishe 2 tatze de jogo, 22 versio. ‘clase cused | ponies static votd mesn(steing 29923) thonee Jeva-to.Fomscaption | 66 Jova para inciantes syston.outprintia(1'm thinking of a latter betwgan £ and 2.0) byecen-out print (can you guase 6: "77 sh (ohar) syetan-tnroad()» // obtee um char ten <= answer) syaten.cut.printin e+ Régne **"1 lee syetam-out printin(®.. Sorry, you'ze wrong." ' ) Ifs aninhados Um if aninhado 6 uma instrugdo If que & lve de outro I cu ese. Os ifs aninhados ‘Ho muito comuns em prograinag2o. Q importante a lembrar sobre is aninhados cm Java €ofato de que uma insrugao else sera emape referent 3 instruc if mais prxima que estiver dentro do mesmo blace ¢ ainda nao estverasociada a um elec. ‘Aqui estdum exemple: ses 0) [ 21} 20) a= Be elge a= cy // ease eloe 6 veteronte a 160 » 100) 1 8) /] ones oles 6 referents 4 16(t 1») Como 0s coments indicum, 0 ese Final nie ess sssociado a MY <20), porque io est no mesmo bloco (ainda que esse sea if mais proximo som um ese). Em vez disso, o else final est associado aii = 10). O else interno referent 2 fk > 100), porquc esse € olf mais proxime dentro do mesmo bloc. ‘Yoot poe usar un if aninhado para melhor anda mais jogo de adivinba 80. Esse ucrescimo fomece ao jogador uma explicaga sobre um palpiteerrad, 41 saxvinse 2 atxa do Jogo, 24 verte. class cues ( Ehsoun Javs-to.soneawptson | syaten.cut printin(trim thinking of a latter betwen & and 2.0) syeten-cut print (can you gusee 46: "77 on fonar) sysran-sereaaly // seed om ona 1tfen -» answer) syston.cut.princan(r+ aight see { Syston cot print" soy, yo 11 Af anssnado ‘tion © answer) system cut printin|*too tow") Capttulo 3_Instugdes de controle de programa 67 cles Syaten.cut printia( "too ightl ) ) ‘Um excmplo da exscusie € mostrado agus 109 vainking of 2 Letter between Aand 2. can you guess iti 2 A escada if-else-if ‘Uma exrutura de programssio comum busca no la tema seguine aparénea: itteondiga insur, else ite ondig do) insirag. cla iftondigdo) insirags, aninhado ¢ a exeada eels he As expresses condicionis slo avaliadas de cima para bao, Assim que uma condi- ‘fo verdadera¢enconirada, insrugio associa a ela &exccutada € 0 resto da es- «ada ¢ ignorado, Se nenbuma das contigs fr verdadeira, intro ese ina set cexccutada. Com frequéncia,o else final age como uma candigio padro, isto &, se todos os outs testes condicionaisfalharem, a kimainstrusdo else serdcxccutd ‘Seno houver um else finale todas as otras conde forem falsas, nio ocore nenhuma ago. (programa a seguir demonsta a escads iteleif; 1) bomcnotze uma excads 2f-alee-4E clase tadder [ poise static vota mainiaesing ange) | System cot _printia(ie 42 ane eee sfte-2) Syatem.cue-priatin(rx 8 evo"! System cot printia(e = Ehret) pear) sSyaten. oUt print in(ne 19 four"),

Você também pode gostar