Escolar Documentos
Profissional Documentos
Cultura Documentos
Java Modulo 02 Basic
Java Modulo 02 Basic
www.t2ti.com
1
O Curso Java Starter foi projetado com o objetivo de ajudar quelas pessoas que tm uma base de lgica de programao e desejam entrar no mercado de trabal o sabendo Java! " estrutura do curso # formada por mdulos em $%& e por mini'cursos em v(deo) O aluno deve bai*ar esse material e estud+'lo) %eve reali,ar os e*erc(cios propostos) -odas as d.vidas devem ser enviadas para a lista de discusso que est+ dispon(vel para inscrio na p+gina do Curso Java Starter no site ///)t0ti)com) "s d.vidas sero respondidas pelos instrutores "lbert 1ije! Cl+udio de 2arros e 3iguel 4ojiio! al#m dos demais participantes da lista) 5osso objetivo # que aps o estudo do Curso Java Starter o aluno no ten a dificuldades para acompan ar um curso avanado onde poder+ aprender a desenvolver aplicativos para 6eb! utili,ando tecnologias como Servlets e JS$ e frame/or7s como Struts e JS&! al#m do desenvolvimento para dispositivos mveis) "lbert 1ije trabal a com inform+tica desde 1889) %urante esse per(odo j+ trabal ou com v+rias linguagens de programao: Clipper! $;$! %elp i! C! Java! etc) "tualmente mant#m o site ///)alberteije)com) Cl+udio de 2arros # -ecnlogo em $rocessamento de %ados) 3iguel 4ojiio # bac arel em Sistemas de <nformao! profissional certificado Java =SCJ$ 1)>?) O curso Java Starter surgiu da id#ia dos trs amigos que trabal am juntos em uma instituio financeira de grande porte)
www.t2ti.com
0
Mdulo
02
Introduo
seus projetos Java)
Se voc est+ ac ando essa parte do curso muito terica! no se preocupe com isso) @oc vai usar quase tudo que est+ sendo visto aqui quando for criar uma aplicao Java! seja ela des7top! para /eb ou mobile) "ssista aos mini'cursos 5et2eans e 1clipe para observar como instalar e utili,ar essas <%1s) @oc pode escol er qualquer umas das duas para desenvolver os
Tipos de Dados
Observe a tabela a seguir! sobre os tipos de dados) 1sses tipos so con ecidos como -ipos de %ados $rimitivos) Como podemos observar a linguagem Java oferece diversos tipos de dados com os quais podemos trabal ar) ;+ basicamente duas categorias em que se encai*am os tipos de dados: tipos primitivos e tipos de referncias) Os tipos primitivos correspondem a dados mais simples ou escalares! enquanto os tipos de referncias consistem em arraAs! classes e interfaces) 1stes sero vistos nos mdulos subseqBentes) @amos a uma descrio curta sobre cada um dos tipos:
Tipo
boolean c ar bAte s ort
Descrio
$ode ser contido em 1 bit! por#m o seu taman o no # precisamente definido) "ssume os valores true ou false) Caractere em notao Cnicode de 1D bits) Serve para arma,enar dados alfanum#ricos) -amb#m pode ser usado como um dado inteiro com valores na fai*a entre E e D>>9>) <nteiro de F bits em notao de complemento de dois) $ode assumir valores entre '0GH'10F e 0G'1H10G) <nteiro de 1D bits em notao de complemento de dois) Os valores poss(veis
www.t2ti.com
9
int long
float
double
www.t2ti.com
I
www.t2ti.com
>
www.t2ti.com
D
/* )&aixo simplesmente inserimos o valor !o int em %m long /%e $ o !o&ro !e %m int. 1% seHa. sem pro&lemas5 */ l ; i' S<stem.out.println(=valor !e l ; =@l)' S<stem.out.println(=CCCCCCCCCCCCCCCCCCCCCCCCCCCCC=)' /* Sa*!a !a impress?o4 valor !e l ; GIII CCCCCCCCCCCCCCCCCCCCCCCCCCCCC */ /* #0egamos aos n meros com ponto (l%t%ante (casas !ecimais). */ S<stem.out.println(=;;;;;;;;;;;;;;;;;;;;;;;;;;;;;=)' S<stem.out.println(=ponto (l%t%ante=)' S<stem.out.println(=;;;;;;;;;;;;;;;;;;;;;;;;;;;;;=)' ! ; GM,.:M' S<stem.out.println(=valor !e ! ; = @ !)' ! ; GM,.:M!' S<stem.out.println(=valor !e ! ; = @ !)' ! ; GM,.:M(' S<stem.out.println(=valor !e ! ; = @ !)' /* no primeiro caso atri&%imos GM,.:M - variavel !. sem pro&lemas. (%nciona legal. como po!emos ver na Sa*!a !a impress?o. Jogo !epois atri&%imos GM,.:M!. Eas pra /%e serve esse =!= !epois !o valorP 3n!ica /%e esto% a(irman!o para o "ava /%e a constante (GM,.:M) $ %m !o%&le. 1s !ois casos acima s?o i!8nticos. #omo assimP Para o "ava. o tipo pa!r?o !e %m literal com ponto (l%t%ante $ !o%&le. Portanto. n?o precisa colocar o =!= !epois !o literal se /%iser /%e ela seHa !o%&le. literal CCO GM,.:M Eas o terceiro caso $ interessante. )tri&%imos varivel ! o seg%inte valor4 GM,.:M(. Dessa ve7 estamos inserin!o %m (loat n%m !o%&le. pro&lema nen0%m. pois o (loat $ :M &it e o !o%&le $ +N &it. Eas. o&serve a Sa*!a !a impress?o. Por /%e o n mero !epois !a casa !ecimal (ico% t?o /%e&ra!oP 3nvestig%e e comente na lista. Sa*!a !a impress?o4 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ponto (l%t%ante
www.t2ti.com
G
www.t2ti.com
F
www.t2ti.com
8
$elo que podemos observar no programa anterior! as conversLes em Java ocorrem da seguinte maneira! sem perda de informao:
Um byte pode ser convertido em um s0ort, int, long, (loat ou !o%&le Um short pode ser convertido em um int, long, (loat ou !o%&le Um char pode ser convertido em um int, long, (loat ou !o%&le Um int pode ser convertido em um long, (loat ou !o%&le Um long pode ser convertido em um (loat ou !o%&le Um float pode ser convertido em um !o%&le
www.t2ti.com
1E
J+ as conversLes e*pl(citas! o casting! # permitido em todos os tipos =e*ceto o boolean?! mas o programador deve estar ciente que poder+ aver perda de bits)
Operadores
Os operadores em Java so muito parecidos com os da linguagem C) 5o entanto! e*iste alguns operadores novos) "nalise cuidadosamente a tabela abai*o e faa diversos testes com esses operadores para se acostumar com eles) %urante o desenvolvimento de seus sistemas voc utili,ar+! e muito! a maioria desses operadores) Grupo H operadores organi,ados em gruposM Operador H cada um dos operadoresM Precedncia H ordem de precedncia dos operadoresM A H associatividade do operador =esquerda ou direita?M Operando H operandos do operadorM Descrio H descrio da operao) "lguns operadores relacionados abai*o no sero comentados agora porque so utili,ados com objetos ou tipos referncias! assunto que ser+ estudado mais a frente) 1les esto com a cor da lin a diferente) Os demais j+ podem ser implementados nos e*erc(cios deste mdulo) N importante frisar que voc deve praticar bastante o uso desses operadores) Crie uma classe com um m#todo 3ain! similar a que fi,emos no programa anterior e implemente diversas situaLes onde voc possa analisar o uso de cada um dos
www.t2ti.com
11
Grupo
%elimitador %elimitador
Operador
) OP =argumentos?
Precedncia A Operando
1 1 objeto!membro vetor m#todo! lista de argumentos vari+vel 0 % vari+vel vari+vel inteiro booleana 9 % classe! lista de argumentos tipo! qualquer coero I > D 1 1 1 n.mero! n.mero n.mero! n.mero String! qualquer inteiro! inteiro inteiro! inteiro inteiro! inteiro G 1 n.mero! n.mero n.mero! n.mero referncia! tipo
Descrio
acesso a um membro de um objeto ou classe) acesso ao elemento de um vetor acesso a elemento do vetor ps'incremento! ps' decremento pr#'incremento! pr#' decremento mais e menos un+rio complemento de 1 =bin+rio? 5egao cujo resultado # lgico =trueSfalse? criao de objeto converso de tipo multiplicao! diviso e mdulo =resto? adio e subtrao concatenao desl) a esquerda deslocamento a direita com sinal deslocamento a direita com ,eros menor que! menor ou igual a maior que! maior ou igual a verificao de tipo
aritm#tico aritm#tico aritm#tico bin+rio bin+rio classe converso aritm#tico aritm#tico String bin+rio bin+rio bin+rio condicional condicional condicional
www.t2ti.com
10
Grupo
lgico bin+rio lgico lgico lgico condicional atribuio
Operador
Y [ [ XX [[ \: H TH SH UH KH 'H VVH WWH WWWH XH YH [H
Precedncia
A Operando
Descrio
ZOJ =OC e*clusivo? booleano OC sobre bits OC booleano 1 condicional OC condicional operador tern+rio! condicional atribuio com operao
1m se tratando de precedncia # bom lembrar que os parnteses podem ser usados para modific+'la) 0 K D T > H 90 =0 K D? T > H IE
Controle de Fluxo
O controle de flu*o # efetuado atrav#s do uso de condicionais! que so
www.t2ti.com
19
if else
Sinta*e:
if (express?o &ooleana) instr%>?oUsimples' if (express?o &ooleana) { instr%>Ves T if (express?o &ooleana) { instr%>Ves T else if (express?o &ooleana) { instr%>Ves T else { instr%>Ves T
]uando e*iste apenas uma instruo aps o if no precisamos abrir um bloco com as c aves) Se e*istirem mais instruLes a abertura do bloco # necess+ria) Se ouver mais de uma condio usa'se o else como podemos observar na segunda coluna acima) @eja o e*emplo abai*o e comente o mesmo na lista de discusso)
if ( ano W I) { S<stem.o%t.println(=6?o $ %m ano5=)' T else if ( (anoAN;;I XX anoAGII5;I) YY (anoANII;;I) ) { S<stem.o%t.println(=R &issexto5=)' T else { S<stem.o%t.println(=6?o $ &issexto5=)' T
!"ile e do !"ile
Sinta*e:
while (expres?o &ooleana) { instr%>Ves' T do { instr%>Ves' T while (expres?o &ooleana )'
5o caso do / ile as instruLes sero e*ecutadas enquanto a e*presso booleana for verdadeira) O do'/ ile e*ecuta a instruo pelo menos uma ve, e continua e*ecutando enquanto a e*presso booleana for verdadeira) Observe os e*emplos seguintes)
www.t2ti.com
1I
for
Sinta*e:
for ( iniciali7a>?o' expressVes &ooleanas' passo !a repeti>?o ) instr%>?oUsimples' for ( inicializao; expressVes &ooleanas' passo !a repeti>?o ) { instr%>Ves' T
O for pode conter apenas uma instruo no seu corpo) 5este caso no # necess+rio abrir um bloco) <sso # assim porque o for j+ implementa alguns comandos na sua assinatura! ou seja! no seu cabeal o! como a iniciali,ao da vari+vel e o passo da repetio! ou seja! o incrementoSdecremento da vari+vel) @eja os e*emplos:
//esse t &em (cil. for ( int x ; I' x W GI' x@@ ) { S<stem.out.println (=item = @ x)' T //esse H n?o $ t?o simples sF !e ol0ar. for ( int x ; I. int < ; M,' x W GI XX (< A M ;; I)' x@@. < ; < C G ) { S<stem.out.println (x @ <)' T //tam&$m po!emos (a7er %m la>o in(inito com o (or for ( ' ' ) { if (o&H.7 ;; I) { break' T T
www.t2ti.com
1>
#rea$ e continue
@oc deve ter observado que quando fi,emos os laos infinitos com o / ile e com o for utili,amos um comando brea7) $ara que ele serve\ 1ste comando serve para ^quebrar_ o lao! ou seja! ele far+ com que o lao seja interrompido) O comando continue tamb#m influi dentro de um lao) 3as ele no vai quebrar o lao) 1le interrompe aquela iterao do lao e reinicia o bloco com a pr*ima iterao)
1 se tivermos com um lao dentro de outro e quisermos quebrar o lao mais e*terno\ O brea7 ou continue agem no lao mais interno) 1*iste uma maneira: rotular nossos laos) Observe a imagem a seguir:
www.t2ti.com
1D
s!itc" 'case(
Sinta*e:
switch(seletorUinteiro) { case valorUinteiroUG 4 instr%>Ves' break' case valorUinteiroUM 4 instr%>Ves' break' ... default4 instr%>Ves' T
switch(letra) { case [)[ 4 S<stem.o%t.println(=)=)' break' case [2[ 4 S<stem.o%t.println(=2=)' break' ... default4 S<stem.o%t.println(=P=)' T
Palavras %eservadas
-oda linguagem possui palavras reservadas e isso no seria diferente em Java) Cma verso mais recente do Java pode ter mais palavras reservadas que uma anterior) " seguir voc pode ver uma imagem com boa parte das palavras reservadas em Java) $esquise e descubra quais palavras reservadas no esto na lista abai*o) Comente na lista)
www.t2ti.com
1G
-ente utili,ar algumas dessas palavras como nome de vari+veis e veja como o compilador Java se comporta) @oc deve ter percebido que no utili,amos um tipo String neste mdulo) O Java possui um tipo String! no entanto! String no Java no # um tipo primitivo) &alaremos sobre String em um mdulo posterior)
)ntrada de Dados
Como eu fao para ler algo que o usu+rio digita no prompt\ Observe o programa abai*o:
//importe a classe Scanner para %tili7ar a leit%ra pelo tecla!o //Similar ao \incl%!e !o # import Hava.%til.Scanner' public class Jeit%ra { public static void main(String[] args) { // crie a varivel !e leit%ra !os !a!os Scanner s ; new Scanner(S<stem.in)' // %se os m$to!os !e leit%ra espec*(icos !o tipo !eseHa!o S<stem.out.print(=!igite %ma lin0a4 =)' String lin0a ; s.nextJine()' // le a lin0a S<stem.out.print(=!igite %m n%mero4 =)' int i ; s.next3nt()' // le %m inteiro S<stem.out.print(=!igite %m n%mero4 =)' double ! ; s.nextDo%&le()' // le %m pontoC(l%t%ante T T
Com o estudo do programa acima j+ d+ para voc solicitar que o usu+rio digite alguma coisa e utili,ar o que o mesmo est+ digitando)
www.t2ti.com
1F
)xerc*cios
"prenda com quem tamb#m est+ aprendendo! veja e compartil e as suas respostas no nosso &rum: 1*erc(cios ` 3dulo E0 ` -ipos $rimitivos! Operadores e Controle de &lu*o E1 ' 1screva um programa que imprima o resultado das e*pressLes abai*o: a9`0`1K0K1K9 a0*9`I*> a0KD`9SG*8 a 9 U I `F E0 ' 1screva um programa que declare! iniciali,e e imprima as seguintes vari+veis: a <nteiro i de 90 bits com valor 1 a <nteiro j de DI bits com valor 0 a $onto'flutuante p de 90 bits com valor 0E)E a $onto'flutuante q de DI bits com valor 9E)E a 2oolean b com valor verdadeiro a Caracter c com valor b7c E9 ' <mplemente um programa que recebe um n.mero de 1 a G e imprime o dia da semana correspondente) EI ' "ltere o programa do e*erc(cio anterior para ficar recebendo o n.mero dentro de um lao enquanto o n.mero for diferente de E =,ero?) E> ' <mplemente um programa que recebe repetidamente um n.mero de 1 a 10! enquanto esse n.mero for diferente de E =,ero?! e imprime o ms correspondente) ]uando o n.mero estiver fora do intervalo permitido! a mensagem ^ms inv+lido_ dever+ ser e*ibida) ED ' 1screva um lao / ile que e*ecute 0E ve,es! imprimindo o valor da vari+vel * que inicialmente est+ com valor 1E) Converta este lao para um do'/ ile) EG ' 1screva um programa que imprima na tela a soma dos n.meros (mpares entre 1 e 9E e a multiplicao dos n.meros pares entre 1 e 9E) EF ' 1screva um programa que percorra dois laos de E a 1E! um interno ao outro! imprimindo os contadores! e quando estes forem iguais! o programa deve passar pr*ima interao do lao mais e*terno! caso contr+rio! deve imprimir os valores dos contadores dos dois laos) E8 ' %esenvolva um programa que solicita ao usu+rio um n.mero inteiro de no m+*imo I d(gitos) <nverta esse n.mero) 1E ` %esenvolva um programa que dado um n.mero inteiro o programa informe se o mesmo # um n.mero primo)
www.t2ti.com
18
www.t2ti.com
0E
www.t2ti.com
01