ConteConteúúdodo: Introdu: Introduçção ao Javaão ao Java
Material elaborado pelos profs. Anselmo Montenegro e Marcos Lage
com contribuições dos profs. Leandro A. F. Fernandes e Luiz André P. P. Leme
ProgramaProgramaçção de Computadores IIão de Computadores IITCCTCC--00.174/Turma A00.174/Turma A--11
Professor Leandro A. F. FernandesProfessor Leandro A. F. Fernandes
http://www.ic.uff.br/~laffernandeshttp://www.ic.uff.br/~laffernandes
HistHistóóricorico
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 22
19911991
InIníício em cio em 19911991: : Pequeno grupo de projeto da Pequeno grupo de projeto da Sun MicrosystemsSun Microsystems, denominado , denominado GreenGreen..
O projeto visava oO projeto visava o desenvolvimento de software para uma ampla variedade de desenvolvimento de software para uma ampla variedade de dispositivosdispositivos de rede e sistemas embutidos.de rede e sistemas embutidos.
James GoslingJames Gosling, decide pela cria, decide pela criaçção de uma nova linguagem de programaão de uma nova linguagem de programaçção que fosse ão que fosse
simplessimples, , portportáátil e ftil e fáácil de ser programadacil de ser programada. .
Surge a linguagem Surge a linguagem interpretada interpretada OakOak (carvalho em inglês), mais tarde rebatizada como (carvalho em inglês), mais tarde rebatizada como JavaJava devido a problemas de direitos autorais.devido a problemas de direitos autorais.
HistHistóóricorico
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 33
19911991
MudanMudançça de foco para a de foco para aplicaaplicaçção na Internetão na Internet..((visãovisão: um meio popular de transmissão de texto, som, v: um meio popular de transmissão de texto, som, víídeo).deo).
Projetada para Projetada para transferência de contetransferência de conteúúdo de mdo de míídia dia em redes com dispositivos em redes com dispositivos heterogêneos. heterogêneos.
TambTambéém possui capacidade m possui capacidade de transferir de transferir ““comportamentoscomportamentos””, junto com o conte, junto com o conteúúdo. do.
((HTML por si sHTML por si sóó não faz issonão faz isso))
Em Em 19941994::
Jonathan Payne Jonathan Payne e e Patrick Naughton Patrick Naughton desenvolveram o programa navegador desenvolveram o programa navegador WebRunnerWebRunner..
19941994
HistHistóóricorico
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 44
19911991
No No SunWorldSunWorld’’95 95 a a SunSun apresenta formalmente apresenta formalmente o navegador o navegador HotJavaHotJava e a linguagem e a linguagem JavaJava..
Poucos meses depois a Poucos meses depois a Netscape Corp. Netscape Corp. lanlançça o seu navegador capaz de fazer download e a o seu navegador capaz de fazer download e executar pequenos cexecutar pequenos cóódigos digos JavaJava chamados de chamados de AppletsApplets..
Imediatamente a Imediatamente a SunSun decide disponibilizar o decide disponibilizar o JavaJava gratuitamente gratuitamente para a comunidade de para a comunidade de desenvolvimento de softwares e assim surge o desenvolvimento de softwares e assim surge o Java DeveloperJava Developer´́s Kit 1.0 (JDK 1.0)s Kit 1.0 (JDK 1.0)..
InicialmenteInicialmente: : Sun Solaris Sun Solaris e e Microsoft Windows 95/NTMicrosoft Windows 95/NT. . Progressivamente surgiram kits para outras plataformas Progressivamente surgiram kits para outras plataformas como como LinuxLinux e e Apple MacintoshApple Macintosh..
19941994 19951995
CaracterCaracteríísticas da Linguagem sticas da Linguagem JavaJava
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 55
CaracterCaracteríísticas da Linguagem sticas da Linguagem JavaJava
ÉÉ de de ffáácil aprendizadocil aprendizado..
PuramentePuramente orientada a objetos:orientada a objetos:Permite o desenvolvimento de sistemas de uma forma Permite o desenvolvimento de sistemas de uma forma
mais natural.mais natural.
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 66
Simples e orientada a objetosSimples e orientada a objetos
CaracterCaracteríísticas da Linguagem sticas da Linguagem JavaJava
Projetada para trabalhar em Projetada para trabalhar em ambiente de redesambiente de redes..
Não Não éé uma linguagem para uma linguagem para programaprogramaçção distribuão distribuíídada: : Oferece Oferece bibliotecas para facilitar bibliotecas para facilitar o processo de o processo de comunicacomunicaççãoão..
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 77
DistribuDistribuíídada
CaracterCaracteríísticas da Linguagem sticas da Linguagem JavaJava
ÉÉ uma uma linguagem interpretadalinguagem interpretada e existe uma grande e existe uma grande discussão quanto a sua performance. discussão quanto a sua performance.
FatoFato: As melhorias na tecnologia de compila: As melhorias na tecnologia de compilaçção, tem ão, tem aproximado o desempenho ao deaproximado o desempenho ao delinguagens como C e C++.linguagens como C e C++.
Ex.Ex.: Benchmarks mostram melhor: Benchmarks mostram melhordesempenho em alguns casos edesempenho em alguns casos epior em outros, caracterizandopior em outros, caracterizando““empate tempate téécnicocnico””..
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 88
Alta PerformanceAlta Performance
http://blog.cfelde.com/2010/06/c-vs-java-performance/
CaracterCaracteríísticas da Linguagem sticas da Linguagem JavaJava
As seguintes caracterAs seguintes caracteríísticas contribuem para tornar a sticas contribuem para tornar a linguagem mais robusta e segura:linguagem mais robusta e segura:
��ÉÉ fortemente tipadafortemente tipada;;
��Não possui aritmNão possui aritméética de ponteiros;tica de ponteiros;
��Possui mecanismo de Possui mecanismo de coleta de lixocoleta de lixo;;
��Possui Possui verificaverificaçção rigorosa ão rigorosa em tempo de compilaem tempo de compilaçção;ão;
��Possui mecanismos para Possui mecanismos para verificaverificaçção em tempo de execuão em tempo de execuççãoão;;
��Possui Possui gerenciador de segurangerenciador de seguranççaa..
SeguranSeguranççaa: possui mecanismos de seguran: possui mecanismos de segurançça que evitam a que evitam operaoperaçções no sistema de arquivos da mões no sistema de arquivos da mááquina alvo.quina alvo.
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 99
Robusta e SeguraRobusta e Segura
CaracterCaracteríísticas da Linguagem sticas da Linguagem JavaJava
Bytecodes Bytecodes executam em qualquer mexecutam em qualquer mááquina que quina que possua uma JVM, permitindo que o cpossua uma JVM, permitindo que o cóódigo em Java digo em Java possa ser escrito possa ser escrito independente da plataformaindependente da plataforma..
A caracterA caracteríística de ser stica de ser neutra em relaneutra em relaçção ão ààarquiteturaarquitetura permite uma grande permite uma grande portabilidadeportabilidade..
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 1010
Interpretada, Neutra, PortInterpretada, Neutra, Portáávelvel
CaracterCaracteríísticas da Linguagem sticas da Linguagem JavaJava
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 1111
Interpretada, Neutra, PortInterpretada, Neutra, Portáávelvel
myProgram.javamyProgram.java
myProgram.classmyProgram.class
compiladorcompiladorcompilador
InterpretadorInterpretadorInterpretador
My My ProgramProgram
00101101000010110100
CaracterCaracteríísticas da Linguagem sticas da Linguagem JavaJava
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 1212
Interpretada, Neutra, PortInterpretada, Neutra, Portáávelvel
myProgram.javamyProgram.java
Java APIJava API
Java Virtual MachineJava Virtual Machine
HardwareHardware--Based PlataformBased Plataform
CaracterCaracteríísticas da Linguagem sticas da Linguagem JavaJava
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 1313
Interpretada, Neutra, PortInterpretada, Neutra, Portáávelvel
compiladorcompiladorcompilador
O Ambiente O Ambiente JavaJava
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 1414
ByteCodesByteCodesByteCodes
JVM
JJVVMM
JC
JJCC
JVM
JJVVMM
JC
JJCC
JVM
JJVVMM
JC
JJCC
JVM
JJVVMM
JC
JJCC
Win95/98Win95/98Win95/98 WinNTWinNTWinNT LinuxLinuxLinux SolarisSolarisSolaris
O Ambiente O Ambiente JavaJava
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 1515
EditorEditorEditor
.java.java.java CompiladorCompiladorCompilador
.class.class.class CarregadorCarregadorCarregador
ByteCodesByteCodesVerificadorVerificadorVerificador
ByteCodesByteCodes
InterpretadorInterpretadorInterpretador
CaracterCaracteríísticas da Linguagem sticas da Linguagem JavaJava
ResoluResoluçção de referências em tempo de execuão de referências em tempo de execuçção:ão:
flexibilidade performance.flexibilidade performance.
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 1616
Dinâmica e MultithreadDinâmica e Multithread
suporte para suporte para mmúúltiplas threads de execultiplas threads de execuççãoão, que , que podem tratar diferentes tarefas concorrentemente.podem tratar diferentes tarefas concorrentemente.
O Ambiente O Ambiente de Desenvolvimentode Desenvolvimento
Java possui um ambiente de desenvolvimento de software Java possui um ambiente de desenvolvimento de software denominado denominado Java SDKJava SDK..
((Software Development KitSoftware Development Kit –– antigamente denominado JDK). antigamente denominado JDK).
Não Não éé um ambiente integrado um ambiente integrado de desenvolvimento, não oferecendo de desenvolvimento, não oferecendo editores ou ambiente de programaeditores ou ambiente de programaçção. ão.
O Java SDK O Java SDK contcontéém um amplo conjunto de APIsm um amplo conjunto de APIs..
(Application Programing Interface(Application Programing Interface).).
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 1717
O Ambiente O Ambiente de Desenvolvimentode Desenvolvimento
Algumas ferramentas do Java SDK:Algumas ferramentas do Java SDK:
��o o compiladorcompilador Java (javac) Java (javac)
��o o interpretadorinterpretador de aplicade aplicaçções Java (java)ões Java (java)
��oo interpretador de applets interpretador de applets Java (appletsviewer) Java (appletsviewer)
��javadoc (um gerador de javadoc (um gerador de documentadocumentaççãoão para programas Java) para programas Java)
��JJar (o manipulador de ar (o manipulador de arquivos comprimidos arquivos comprimidos no formato Java Archive)no formato Java Archive)
��jdb (um jdb (um depurador depurador de programas Java)de programas Java)
��etc.etc.
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 1818
PackagesPackages
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 1919
Os arquivos Java serão armazenados Os arquivos Java serão armazenados fisicamente em uma pasta.fisicamente em uma pasta.
No nosso exemplo ao lado estes arquivos No nosso exemplo ao lado estes arquivos estão no diretestão no diretóório jplay.rio jplay.
Cada arquivo representa uma Cada arquivo representa uma classeclasse Java.Java.
Com o uso de Com o uso de packages packages podemos organizar podemos organizar de forma fde forma fíísica algo lsica algo lóógico.gico.(um grupo de classes em comum)(um grupo de classes em comum)
PackagesPackages
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 2020
Para indicar que as definiPara indicar que as definiçções de um arquivo fonte Java ões de um arquivo fonte Java fazem parte de um determinado pacote, a primeira linha de fazem parte de um determinado pacote, a primeira linha de ccóódigo deve ser a declaradigo deve ser a declaraçção de pacote:ão de pacote:
package nomedopacote;package nomedopacote;
Caso tal declaraCaso tal declaraçção não esteja presente, as classes farão ão não esteja presente, as classes farão parte do parte do ““pacote defaultpacote default””, que est, que estáá mapeado para o mapeado para o diretdiretóório corrente.rio corrente.
PackagesPackages
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 2121
Referenciando uma classe de um pacote no cReferenciando uma classe de um pacote no cóódigo fonte:digo fonte:
import nomedopacote.Xyz ou simplesmenteimport nomedopacote.Xyz ou simplesmente
import nomedopacote.*import nomedopacote.*
Com isso a classe Xyz pode ser referenciada sem o prefixo Com isso a classe Xyz pode ser referenciada sem o prefixo nome_do_pacote no restante do cnome_do_pacote no restante do cóódigo.digo.
A A úúnica excenica exceçção refereão refere--se se ààs classes do pacote java.lang.s classes do pacote java.lang.
ClasspathClasspath
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 2222
O ambiente Java normalmente utiliza a especificaO ambiente Java normalmente utiliza a especificaçção de ão de uma uma varivariáável de ambiente CLASSPATHvel de ambiente CLASSPATH..
CLASSPATH define uma CLASSPATH define uma lista de diretlista de diretóórios rios que contque contéém os m os arquivos de classes Java.arquivos de classes Java.
No exemplo anteriorNo exemplo anterior: se o arquivo Xyz.class estiver no : se o arquivo Xyz.class estiver no diretdiretóório rio /home/java/nomedopacote/home/java/nomedopacote, então o diret, então o diretóório rio /home/java /home/java deve estar includeve estar incluíído lista de diretdo lista de diretóórios definida rios definida por CLASSPATH.por CLASSPATH.
Tipos PrimitivosTipos Primitivos
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 2323
•• OrganizaOrganizaçção da ão da memmemóóriaria
–– Bit: Bit:
•• menor unidademenor unidade
•• armazena 0 ou 1armazena 0 ou 1
–– Byte:Byte:
•• seqseqüüência de 8 bitsência de 8 bits
0 1 2 3 4 5 6 7
1 0 0 1 1 1 0 0 1 0
1 1 1 0 0 1 1 1 0
2 0 1 1 1 0 0 1 0
3 0 0 0 0 0 0 0 0
2 0 1 1 1 0 1 0 1 0
1 0 0 0 0 0 0 0 0
2 1 1 1 1 1 1 1 1
3 0 0 0 0 0 0 0 0
Tipos PrimitivosTipos Primitivos
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 2424
Bits Valor
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7
Byte Valor
00000000 0
00000001 1
00000010 2
00000011 3
… …
11111101 253
11111110 254
11111111 255
Tipos PrimitivosTipos Primitivos
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 2525
Bits Valor
011 3
010 2
001 1
000 0
101 -1
110 -2
111 -3
Com sinal
O valor de uma posição de memória depende do
tipo que estáarmazenado lá!
Tipos PrimitivosTipos Primitivos
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 2626
IEEE standart 754 Floating Point
s eeee…eeee mmmmmmmmm…mmmmmm
051526263
Precisão dupla (double)
310123456.456.123 ×=
s eeeeeeee mmmmmmmm…mmmmmm
022233031
Precisão simples (float)
mantissaexpoente
Tipos PrimitivosTipos Primitivos
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 2727
111 105 32 61 110 61 0
'i''o' ' ' 'a' 'a''n' ‘\0'
"oi ana"
Tipos PrimitivosTipos Primitivos
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 2828
Tipos PrimitivosTipos Primitivos
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 2929
Podem ser agrupados em quatro categorias:Podem ser agrupados em quatro categorias:
Tipos Inteiros:Tipos Inteiros:Byte, Inteiro Curto, Inteiro e Inteiro Longo.Byte, Inteiro Curto, Inteiro e Inteiro Longo.
Tipos Ponto Flutuante: Tipos Ponto Flutuante: Ponto Flutuante Simples, Ponto Flutuante Duplo.Ponto Flutuante Simples, Ponto Flutuante Duplo.
Tipo Caractere:Tipo Caractere:Caractere.Caractere.
Tipo LTipo Lóógico:gico:Booleano.Booleano.
Tipos PrimitivosTipos Primitivos
2012.12012.1 ProgramaProgramaçção de Computadores IIão de Computadores II 3030
InteirosInteiros
--2.147.483.648 a +2.147.483.647 2.147.483.648 a +2.147.483.647 intint--9.223.372.036.854.775.808 a 9.223.372.036.854.775.808 a +9.223.372.036.854.775.807 +9.223.372.036.854.775.807 longlong
--32.768 a +32.767 32.768 a +32.767 short short
--128 a +127 128 a +127 bytebyte
FaixasFaixasTipos de Dados InteirosTipos de Dados Inteiros
O valor default de todos O valor default de todos éé 0 (zero).0 (zero).
Tipos PrimitivosTipos Primitivos
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 3131
Ponto FlutuantePonto Flutuante
FaixasFaixasTipos de Dados em Tipos de Dados em Ponto FlutuantePonto Flutuante
de de ±± 4.94065645841246544 x 104.94065645841246544 x 10--324324
atatéé ±± 1.79769313486231570 x 101.79769313486231570 x 10+308+308doubledouble
de de ±± 1.40282347 x 101.40282347 x 10--4545
atatéé ±± 3.40282347 x 103.40282347 x 10+38+38floatfloat
Exemplos: Exemplos:
1.44E6 1.44E6 éé equivalente a 1.44 x 10equivalente a 1.44 x 1066 = 1.440.000. = 1.440.000. 3.4254e3.4254e--2 representa 3.4254 x 102 representa 3.4254 x 10--22 =0.034254. =0.034254.
O valor default de ambos O valor default de ambos éé 0 (zero).0 (zero).
Tipos PrimitivosTipos Primitivos
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 3232
CaractereCaractere
O tipo O tipo char char permite a representapermite a representaçção de ão de caracteres individuaiscaracteres individuais..
Ocupa Ocupa 16 bits internamente 16 bits internamente permitindo atpermitindo atéé 32.768 caracteres diferentes.32.768 caracteres diferentes.
O valor default O valor default éé 0 (zero).0 (zero).
Caracteres de controle e outros caracteres cujo uso Caracteres de controle e outros caracteres cujo uso éé reservado pela reservado pela linguagem devem ser usados precedidos por linguagem devem ser usados precedidos por \\ ..
Tipos PrimitivosTipos Primitivos
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 3333
CaractereCaractere
\\bb backspacebackspace
\\tt TTabulaabulaçção horizontalão horizontal
\\nn newlinenewline
\\ff form feedform feed
\\rr carriage returncarriage return
\\”” aspasaspas
\\’’ aspas simplesaspas simples
\\\\ contrabarracontrabarra
\\xxxxxx o caracter com co caracter com cóódigo de valor octal xxx, que digo de valor octal xxx, que pode assumir valores entre 000 e 377.pode assumir valores entre 000 e 377.
\\uxxxxuxxxx o caro carááter com cter com cóódigo de valor hexadecimal xxxx, digo de valor hexadecimal xxxx, que pode assumir valores entre 0000 e ffff.que pode assumir valores entre 0000 e ffff.
Tipos PrimitivosTipos Primitivos
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 3434
BooleanoBooleano
ÉÉ representado pelo tipo lrepresentado pelo tipo lóógico gico booleanboolean. .
Assume os valores Assume os valores falsefalse (falso) ou (falso) ou truetrue (verdadeiro).(verdadeiro).
O valor default O valor default éé falsefalse..
Ocupa 1 bit.Ocupa 1 bit.
Diferente da linguagem C, onde ocupa 1 byte.Diferente da linguagem C, onde ocupa 1 byte.
Palavras reservadasPalavras reservadas
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 3535
abstractabstract continuecontinue finallyfinally interfaceinterface publicpublic throwthrow
booleanboolean defaultdefault floatfloat longlong returnreturn throwsthrows
breakbreak dodo forfor nativenative shortshort transienttransient
bytebyte doubledouble ifif newnew staticstatic truetrue
casecase elseelse implementsimplements nullnull supersuper trytry
catchcatch extendsextends importimport packagepackage switchswitch voidvoid
charchar falsefalse instanceofinstanceof privateprivate synchronizesynchronize
ddwhilewhile
classclass finalfinal intint protectedprotected thisthis
usadas pela linguagemusadas pela linguagem
Palavras reservadasPalavras reservadas
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 3636
constconst futurefuture genericgeneric gotogoto innerinner operatoroperator
outerouter restrest varvar volatilevolatile
NÃONÃO usadas pela linguagemusadas pela linguagem
DeclaraDeclaraçção de Varião de Variááveisveis
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 3737
Uma variUma variáável vel não pode utilizar como nome uma palavra não pode utilizar como nome uma palavra reservada reservada da linguagem.da linguagem.
SintaxeSintaxe::Tipo nome1 [, nome2 [, nome3 [..., nomeN]]];Tipo nome1 [, nome2 [, nome3 [..., nomeN]]];
ExemplosExemplos::intint i;i;
floatfloat total, preco;total, preco;
bytebyte mascara;mascara;
doubledouble valormedio; valormedio;
DeclaraDeclaraçção de Varião de Variááveisveis
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 3838
Embora Embora não seja de uso obrigatnão seja de uso obrigatóóriorio, existe a conven, existe a convençção padrão ão padrão para atribuir nomes em Java, como:para atribuir nomes em Java, como:
��Nomes de classes são iniciados por letras maiNomes de classes são iniciados por letras maiúúsculas;sculas;
��Nomes de mNomes de méétodos, atributos e varitodos, atributos e variááveis são iniciados por letras minveis são iniciados por letras minúúsculas;sculas;
��Em nomes compostos, cada palavra do nome Em nomes compostos, cada palavra do nome éé iniciada por letra maiiniciada por letra maiúúscula, as scula, as palavras não são separadas por nenhum spalavras não são separadas por nenhum síímbolo.mbolo.
Documento: Code Conventions for the JavaTM Programming Language.Documento: Code Conventions for the JavaTM Programming Language.
ComentComentááriosrios
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 3939
ExemplosExemplos::
// coment// comentáário de uma linhario de uma linha
/* coment/* comentáário derio de
mmúúltiplas linhas */ltiplas linhas */
/** coment/** comentáário de documentario de documentaççãoão
* que tamb* que tambéém podem pode
* possuir m* possuir múúltiplas linhasltiplas linhas
*/*/
ComentComentááriosrios
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 4040
/** Classe destinada ao armazenamento/** Classe destinada ao armazenamento
* de dados relacionados a arquivos ou* de dados relacionados a arquivos ou
* diret* diretóórios.rios.
* <p> Pode ser usada para armazenar * <p> Pode ser usada para armazenar áárvores de diretrvores de diretóórios.rios.
* @author Joao Jr.* @author Joao Jr.
* @see java.io.File* @see java.io.File
*/*/
Operadores AritmOperadores Aritmééticosticos
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 4141
++ AdiAdiççãoão a+ba+b
-- SubtraSubtraççãoão aa--bb
** MultiplicaMultiplicaççãoão a*ba*b
// DivisãoDivisão a/ba/b
%% Resto da divisão Resto da divisão inteirainteira
a%ba%b
-- -- UnUnááriorio --aa
++ + Un+ Unááriorio +a+a
++++ Incremento Incremento
unitunitááriorio++a ou a++++a ou a++
---- Decremento Decremento unitunitááriorio
----a ou aa ou a----
Operadores RelacionaisOperadores Relacionais
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 4242
==== IgualIgual a==ba==b
!=!= DiferenteDiferente a!=ba!=b
>> Maior queMaior que a>ba>b
>=>= Maior ou igual aMaior ou igual a a>=ba>=b
<< Menor queMenor que aa<b<b
<=<= Menor ou igual aMenor ou igual a a<=ba<=b
Operadores LOperadores Lóógicosgicos
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 4343
&&&& E lE lóógico gico (and)(and) a&&ba&&b
|||| Ou lOu lóógico gico (or)(or) aa||b||b
!! NegaNegaçção ão (not)(not) !a!a
Programa JavaPrograma Java
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 4444
public class HelloJavaClass {
}
public class public class HelloJavaClass {HelloJavaClass {
}}
import java.util.*;importimport java.util.*;java.util.*;PacotesPacotes
MMéétodostodos
ClassesClasses
VariVariááveisveis
public static void public static void main(String[] args) {main(String[] args) {
System.out.println(System.out.println(““Hello, JavaHello, Java””););
Date d = Date d = newnew Date();Date();
System.out.println(System.out.println(““Date: Date: ““+d.toString());+d.toString());
}}
Todos os programas em Java possuem quatro elementos bTodos os programas em Java possuem quatro elementos báásicos:sicos:
Fluxo de execuFluxo de execuççãoão
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 4545
Normalmente Normalmente sequencialsequencial..
Comandos de controle de fluxo permitem Comandos de controle de fluxo permitem modificar essa ordem modificar essa ordem naturalnatural de execude execuçção:ão:
if if (condi(condiçção) {ão) {
bloco_comandosbloco_comandos
}}
Fluxo de execuFluxo de execuççãoão
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 4646
switch switch (vari(variáável) {vel) {
casecase valor1:valor1:
bloco_comandosbloco_comandos
break;break;
casecase valor2:valor2:
bloco_comandosbloco_comandos
break;break;
......
casecase valorn:valorn:
bloco_comandosbloco_comandos
break;break;
defaultdefault::
bloco_comandosbloco_comandos
}}
while while (condi(condiçção) {ão) {
bloco_comandosbloco_comandos
}}
do do {{
bloco_comandosbloco_comandos
} } while while (condi(condiçção);ão);
for for (inicializa(inicializaçção; condião; condiçção; incremento) {ão; incremento) {
bloco_comandosbloco_comandos
}}
Fluxo de execuFluxo de execuççãoão
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 4747
Desvio de fluxoDesvio de fluxo
If If e e SwitchSwitch
Exemplo: IfExemplo: If
public class ExemploIf {
public static void main(String args[]) {
if (args.length > 0) {
for (int j=0; j<Integer.parseInt(args[0]); j++) {
System.out.print(j + “ “);
}
System.out.println(“\nFim da contagem”);
}
System.out.println(“Fim do programa”);
}
}
Fluxo de execuFluxo de execuççãoão
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 4848
Desvio de fluxoDesvio de fluxo
public class ExemploSwitch {
public static void main(String args[]) {
if (args.length > 0) {
switch (args[0].charAt(0)) {
case ‘a’:
case ‘A’: System.out.println(“Vogal A”); break;
case ‘e’:
case ‘E’: System.out.println(“Vogal E”); break;
case ‘i’:
case ‘I’: System.out.println(“Vogal I”); break;
case ‘o’:
case ‘O’: System.out.println(“Vogal O”); break;
case ‘u’:
case ‘U’: System.out.println(“Vogal U”); break;
default: System.out.println(“Não é uma vogal”);
}
}
else {
System.out.println(“Argumentos não fornecidos”);
}
}
}
If If e e SwitchSwitch
Exemplo: SwitchExemplo: Switch
Fluxo de execuFluxo de execuççãoão
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 4949
Estruturas de repetiEstruturas de repetiççãoão
RepetiRepetiçção simples:ão simples: forfor
Exemplo: Exemplo:
public class ExemploFor {
public static void main(String args[]) {
for (int j=0; j<10; j++) {
System.out.println(“O valor de j é ” + j);
}
}
}
Fluxo de execuFluxo de execuççãoão
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 5050
Estruturas de repetiEstruturas de repetiççãoão
RepetiRepetiçção condicional:ão condicional: whilewhile ee do whiledo while
Exemplo: whileExemplo: while
public class ExemploWhile {
public static void main(String args[]) {
int j = 10;
int n = Integer.parseInt(args[0]);
while (j > n) {
System.out.println(“O valor de j é ” + j);
j--;
}
}
}
Fluxo de execuFluxo de execuççãoão
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 5151
Estruturas de repetiEstruturas de repetiççãoão
RepetiRepetiçção condicional:ão condicional: whilewhile ee do whiledo while
Exemplo: do whileExemplo: do while
public class ExemploDoWhile {
public static void main(String args[]) {
int min = Integer.parseInt(args[0]);
int max = Integer.parseInt(args[1]);
do {
System.out.println(min + “ < ” + max);
min++;
max--;
} while (min < max);
System.out.println(min + “ >= ” + max);
}
}
Fluxo de execuFluxo de execuççãoão
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 5252
Controle de ErroControle de Erro
Diretiva Diretiva TryTry -- CatchCatch::
try try {{
Fluxo normal do sistemaFluxo normal do sistema
}}
catch catch (Exce(Exceçção1) {ão1) {
Diretiva do tratamento do erro 1Diretiva do tratamento do erro 1
}}
catch catch (Exce(Exceçção2) {ão2) {
Diretiva do tratamento do erro 2Diretiva do tratamento do erro 2
}}
Fluxo de execuFluxo de execuççãoão
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 5353
Controle de ErroControle de Erro
RepetiRepetiçção condicional:ão condicional: trytry ee catchcatch
Exemplo: 1 exceExemplo: 1 exceççãoão
public class ExemploTryCatch1 {
public static void main(String args[]) {
try {
int j = 10;
int n = Integer.parseInt(args[0]);
while (j > n) {
System.out.println(“O valor de j é ” + j);
j--;
}
}
catch (ArrayIndexOutOfBoundsException e) {
System.err.println(“Não foi fornecido um argumento.”);
}
}
}
Fluxo de execuFluxo de execuççãoão
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 5454
Controle de ErroControle de Erro
RepetiRepetiçção condicional:ão condicional: trytry ee catchcatch
Exemplo: 2 exceExemplo: 2 exceççõesões
public class ExemploTryCatch2 {
public static void main(String args[]) {
try {
int j = 10;
int n = Integer.parseInt(args[0]);
while (j > n) {
System.out.println(“O valor de j é ” + j);
j--;
}
}
catch (ArrayIndexOutOfBoundsException e) {
System.err.println(“Não foi fornecido um argumento.”);
}
catch (NumberFormatException e) {
System.err.println(“O argumento fornecido não é um número inteiro.”);
}
}
}
Fluxo de execuFluxo de execuççãoão
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 5555
Controle de ErroControle de Erro
Diretiva Diretiva TryTry -- CatchCatch -- FinallyFinally::
try try {{
Fluxo normal do sistemaFluxo normal do sistema
}}
catch catch (Exce(Exceçção1) {ão1) {
Diretiva do tratamento do erro 1Diretiva do tratamento do erro 1
}}
finally finally {{
Fluxo que serFluxo que seráá sempre executado, independente dasempre executado, independente da
ocorrência da exceocorrência da exceçção ou não.ão ou não.
LiberaLiberaçção de recursos. Ex: Fechamento de arquivos.ão de recursos. Ex: Fechamento de arquivos.
}}
ArraysArrays
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 5656
O propO propóósito de um array sito de um array éé permitir o permitir o armazenamento e manipulaarmazenamento e manipulaççãoão de uma de uma grande quantidade de dados de mesmo tipo.grande quantidade de dados de mesmo tipo.
ExemplosExemplos::��Notas de alunosNotas de alunos��NucleotNucleotíídeos em uma cadeia de DNAdeos em uma cadeia de DNA��Frequência de um sinal de Frequência de um sinal de ááudioudio
ArraysArrays
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 5757
ArraysArrays
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 5858
Os elementos de um array são identificados Os elementos de um array são identificados atravatravéés de s de ííndicesndices..
Arrays cujos elementos são indicados por um Arrays cujos elementos são indicados por um úúnico nico ííndice são denominados arrays ndice são denominados arrays unidimensionaisunidimensionais..
UnidimensionaisUnidimensionais
ArraysArrays
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 5959
Um elemento em uma posiUm elemento em uma posiçção indicada por um ão indicada por um ííndice i, ndice i, em um array A, em um array A, éé acessado atravacessado atravéés do identificador do s do identificador do array seguido do array seguido do ííndice i entre chaves.ndice i entre chaves.
UnidimensionaisUnidimensionais
A[0]A[0] A[1]A[1] A[2]A[2] A[3]A[3] …… A[nA[n--2]2] A[nA[n--1]1]
ArraysArrays
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 6060
A criaA criaçção de um array em Java requer 3 passos:ão de um array em Java requer 3 passos:
1.1.DeclaraDeclaraçção do nome do array e seu tipoão do nome do array e seu tipo2.2.AlocaAlocaçção do arrayão do array3.3.InicializaInicializaçção de seus valoresão de seus valores
UnidimensionaisUnidimensionais
double[] a;double[] a;
a = new double[10];a = new double[10];
for (int i = 0; i<10;i++)for (int i = 0; i<10;i++)
a[i] = 0.0;a[i] = 0.0;
ArraysArrays
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 6161
O O nnúúmero de elementos mero de elementos de um array em Java pode ser de um array em Java pode ser determinado atravdeterminado atravéés do atributo lengths do atributo length
ExemploExemplo::a.lengtha.length
Arrays em Java são Arrays em Java são objetosobjetos..(mais detalhes serão vistos posteriormente)(mais detalhes serão vistos posteriormente)
Arrays em Java tem Arrays em Java tem ííndice base igual a zerondice base igual a zero..
UnidimensionaisUnidimensionais
ArraysArrays
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 6262
Arrays em Java podem ser Arrays em Java podem ser inicializados em tempo de inicializados em tempo de compilacompilaççãoão..
ExemplosExemplos::String[ ] naipe = {String[ ] naipe = {““copascopas””,,””ourosouros””, , ““pauspaus””,,””espadasespadas””};};
double[ ] temperaturas = {45.0,32.0,21.7,28.2,27.4};double[ ] temperaturas = {45.0,32.0,21.7,28.2,27.4};
UnidimensionaisUnidimensionais
ArraysArrays
28/8/201428/8/2014 ProgramaProgramaçção de Computadores IIão de Computadores II 6363
Arrays multidimensionais representam agregados homogêneos Arrays multidimensionais representam agregados homogêneos cujos cujos elementos são especificados por mais de um elementos são especificados por mais de um ííndicendice..
Em Java Em Java éé muito simples especificar um array multidimensional.muito simples especificar um array multidimensional.
ExemploExemplo: : array contendo as notas de 3 provas de 30 alunosarray contendo as notas de 3 provas de 30 alunosint[][] notas = new int[30][3];int[][] notas = new int[30][3];
MultidimensionaisMultidimensionais