Sie sind auf Seite 1von 51

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

Pg.

Apresentao
Carssimos, com grande prazer que aqui propomos este mini-curso sobre a linguagem de
programao JAVA.

Por que o ttulo Java, programando rumo ao futuro!? Porque pretendemos dar uma viso geral da
linguagem e inter-los desse novo paradigma de programao atual e como este novo paradigma
pode simplificar a vida dos programadores poupando-lhes tempo, trabalho e, principalmente,
dinheiro.

Esta linguagem de programao oferece muitas vantagens em relao a outras linguagens tais como
o C++, Pascal... Algumas destas vantagens so: portabilidade, grande quantidade de pacotes para a
soluo de vrios problemas, entre as quais: threads e sockets, interfaces grficas, sintaxe simples,
orientao a objetos, compiladores e interpretadores gratuitos.

Mas o que portabilidade? Por portabilidade entende-se a possibilidade de executar o mesmo


programa JAVA feito para Windows em muitas outras plataformas diferentes sem sofrer ajustes.
E isto realmente bom.

Outra vantagem relevante do JAVA que esta uma linguagem compilada e interpretada. Isto ,
um programa JAVA compilado para uma linguagem composta por bytecodes. O bytecode um
cdigo de mquina idealizado pelos criadores da linguagem. A maioria dos computadores no
entende os bytecodes, sendo necessrio executar o programa JAVA sobre uma mquina virtual JVM
(Java Virtual Machine). Um programa executado na mquina real capaz de interpretar os bytecodes.

Obviamente, como nem tudo perfeito, algumas desvantagens existem tais como sua baixa
performance em relao a C justamente devido ao fato de usar bytecodes.

Todavia, produtos como Code Generator e Java Caf, da Sun e Symantec geram a partir da
linguagem JAVA um assembly para a mquina real evitando os bytecodes.

Finalmente, desejamos-lhes bom aprendizado. Sejam bem-vindos ao mundo do JAVA!


Atenciosamente, os ministrantes.
Lavras, maio de 2003.

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

Pg.

1 Roteiro
1. Roteiro .................................................................................................................................... 2
2. Contexto histrico da linguagem JAVA ................................................................................... 4
3. Ambiente e configurao de ambiente ...................................................................................... 4
4. Introduo aos aplicativos JAVA ............................................................................................. 5
5. Introduo aos applets JAVA .................................................................................................. 9
6. Estruturas de controle .............................................................................................................. 12
6.1. A estrutura de seleo if ............................................................................................ 12
6.2. A estrutura de seleo if-else ..................................................................................... 12
6.3. A estrutura de repetio while .................................................................................... 13
6.4. A estrutura de repetio for ....................................................................................... 15
6.5. A estrutura de seleo mltipla switch ........................................................................ 15
6.6. A estrutura repetio do-while ................................................................................... 17
6.7. As instrues rotuladas break e continue ................................................................... 17
7. Mtodos e recursividade .......................................................................................................... 18
7.1. Introduo ................................................................................................................. 18
7.2. Durao dos identificadores ....................................................................................... 18
7.3. Regras de escopo ....................................................................................................... 19
7.4. Recurso ................................................................................................................... 19
7.5. Sobrecarga de mtodo ............................................................................................... 19
8. Vetores (arrays) ...................................................................................................................... 19
8.1. Introduo ................................................................................................................. 19
8.2. Arrays multidimensionais ........................................................................................... 20
9. Orientao a objeto (OO) ......................................................................................................... 21
9.1. Introduo ................................................................................................................. 21
9.2. Superclasses e subclasses ........................................................................................... 21
9.3. Modificadores ............................................................................................................ 22
9.3.1. Modificadores de atributos .......................................................................... 22
9.3.2. Modificadores de mtodos ........................................................................... 22
9.3.3. Modificadores de classes ............................................................................. 23
9.4. A referncia super ...................................................................................................... 23
9.5. Sobrescrita (override) de mtodos ............................................................................. 23
9.6. O operador instanceof ............................................................................................... 24
9.7. Construtores e finalizadores ....................................................................................... 24
9.7.1. Construtor ................................................................................................... 24
9.7.2. Finalizador .................................................................................................. 24
9.8. Polimorfismo ............................................................................................................. 24
9.8.1. Introduo ................................................................................................... 24
9.8.2. Vinculao dinmica de mtodo .................................................................. 24
9.8.3. Superclasses abstratas e classes concretas .................................................... 25
9.8.4. Interfaces .................................................................................................... 25
9.9. Definio de classe interna ......................................................................................... 25
9.9.1. Introduo ................................................................................................... 25
9.9.2. Notas sobre definio de classe interna ........................................................ 26
9.10. Classes invlucro de tipo para tipos primitivos ......................................................... 26
9.11. Exemplo .................................................................................................................. 26
10. Componentes bsicos de uma interface grfica (GUI) ............................................................. 27
10.1. Introduo ............................................................................................................... 27
10.2. Container ................................................................................................................ 27
10.3. JLabel ..................................................................................................................... 27

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

Pg.

10.4. JTextField ............................................................................................................... 27


10.5. JButton .................................................................................................................... 27
10.6. JCheckBox ............................................................................................................... 27
10.7. JRadioButton ........................................................................................................... 28
10.8. JList ........................................................................................................................ 28
10.9. JFrame .................................................................................................................... 28
10.10. Gerenciador de leiaute ........................................................................................... 28
10.11. Painis ................................................................................................................... 28
10.12. Tratamento de eventos ........................................................................................... 29
10.13. Exemplo ................................................................................................................ 29
11. Tratamento de excees ......................................................................................................... 29
11.1. Introduo ............................................................................................................... 29
11.2. Jogando (Throw) uma exceo ................................................................................. 30
11.3. Quando usar tratamento de excees ....................................................................... 31
11.4. Tipos de excees .................................................................................................... 32
11.5. Excees definidas pelo usurio ............................................................................... 32
12. Bibliografia ............................................................................................................................ 33
13. Anexos .................................................................................................................................. 34
13.1. Fontes ...................................................................................................................... 34
Captulo 7 ......................................................................................................................... 34
I. Escopo .............................................................................................................. 34
II. Gerando nmeros de Fibonacci recursivamente ................................................. 35
III. Sobrecarga de mtodos ................................................................................... 36
Captulo 8 ......................................................................................................................... 37
I. Usando arrays ................................................................................................... 37
II. Usando arrays multidimensionais ...................................................................... 38
Captulo 9 ........................................................................................................................ 39
I. Hierarquia de cilindro, ponto e crculo com uma interface Forma ....................... 38
Captulo 10 ....................................................................................................................... 43
I. JCheckBox ........................................................................................................ 43
II. JRadioButton ................................................................................................... 44
III.Multiple Selection List ..................................................................................... 46
IV. JPanel ............................................................................................................ 47
V. Tratamento de Eventos ..................................................................................... 48
Captulo 11 ....................................................................................................................... 43
I. Tratamento de excees padres ........................................................................ 49
II. Tratamento de excees criadas pelo usurio .................................................... 49
13.2. Palavras reservadas de Java ..................................................................................... 50
13.3. Wrappers ................................................................................................................. 50
13.4. Convenes de Java ................................................................................................ 50
13.5. Informaes de copyleft ........................................................................................... 51

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

Pg.

2 Contexto histrico da linguagem JAVA


Talvez a contribuio mais importante da revoluo dos microprocessadores at hoje seja o fato de
ela ter tornado possvel o desenvolvimento de computadores pessoais que logo podero chegar ao
nmero de 900 milhes em todo o mundo. Os computadores pessoais tiveram um profundo impacto
sobre as pessoas e a maneira como as organizaes conduzem e gerenciam os seus negcios.

Historicamente sabe-se que, por volta de 1990 tudo indicava que a revoluo do futuro em
tecnologia seria trazida pelos dispositivos eletrnicos inteligentes destinados ao consumidor final.
Reconhecendo isso, em 1991, a Sun Microsystems iniciou uma pesquisa corporativa interna com o
codinome Green. O projeto resultou numa linguagem baseada no C e C++ que seu criador, James
Gosling, chamou de Oak (carvalho), em homenagem a uma rvore que dava para a janela de seu
escritrio na Sun. Contudo, descobriu-se mais tarde que j existia uma linguagem de programao
com tal nome. Futuramente, em uma visita a uma cafeteria local, o nome Java (cidade de origem de
um tipo de caf importado) foi sugerido e pegou.

O grande impulso dado linguagem foi devido revoluo da WWW (World Wide Web) a partir de
1993. Este impulso foi devido viso do grupo desenvolvedor da linguagem de utilizar o Java para
criar pginas da Web com o chamado contedo dinmico. Comeou-se a a revoluo do mundo
Java.

Oficialmente a linguagem foi anunciada ao mundo em 1995, numa conferncia importante,


alvoroando todo o mercado de desenvolvimento de softwares do mundo.

3 Ambiente e configurao de ambiente


Para programar em Java necessrio um editor de texto comum tal como o notepad, xemacs,
kwrite... Onde ser escrito o cdigo do programa propriamente dito. A transformao do cdigo
escrito pelo programador em bytecodes, ou seja, seu programa, ficar por conta de um
compilador/interpretador. No caso, estar sendo utilizado, aqui, o Java Standard Development Kit
1.4.1 (J2SDK) da Sun Microsystems. O J2SDK pode ser baixado gratuitamente no endereo
http://java.sun.com.
Feito isto, precisa-se agora configurar o ambiente. Para tal crie um diretrio com um nome de sua
preferncia em um local de sua preferncia. Feito isto se precisa criar um arquivo de script com os
comandos abaixo:

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

Pg.

Para WIN(x)
 
       
      
      
        ! "# 
      "#" $ 
 !  % $   & $ ' 
 ( ! (    
 ( ! (  
OBS.: No LINUX e outros sistemas UNIX o path e o classpath j so automticos no sendo
necessrios configur-los na maioria das vezes. Entretanto h casos conhecidos em que isto
necessrio. Neste caso sugerimos uma consulta ao guia de referncia de seu sistema. A primeira
linha acima indica que voc poder executar algum comando do J2SDK a partir de qualquer
diretrio no modo texto. A segunda linha indica o caminho dos seus arquivos .java para o J2SDK.
O arquivo de script descrito acima pode ser de extenso bat no WIN(x) sh no LINUX. Nos
WIN(x) toda vez que voc for programar deve-se executar anteriormente este arquivo de script.
Caso ache isso tedioso coloque as duas linhas acima dentro do arquivo autoexec.bat do sistema.

Finalmente, abra um terminal e/ou console DOS e acesse o diretrio criado e d os comandos:
$ ) $   " ! * ( +,  )  - $ ) $
para compilar o programa e

$ ) $. " ! * ( +,  ) 

para executar o programa compilado pelo comando anterior.

OBS.: Quando for uma applet o comando dever ser:


$& & % ! )  ! ! ( " ! * ( +,  )  ' "#%
para visualiza-lo no aplicativo appletviewer do J2SDK ou ento apenas abra o arquivo .html em algum navegador de
sua preferncia.

4 Introduo aos aplicativos JAVA


Todo aplicativo desta linguagem deve ser salvo em arquivo com a extenso java. Isto
imperativo.

/H
/ 0  dois
213, tipos
"4 " de
!  comentrios,
5(  2 !3%   ' $ os de linha e os de bloco.
/ 6 0  213, "4 " !  5(  
 !3 %    6 /
Vamos analisar o programa abaixo:
/ / (  7( $" $3%  8.,    - $ ) $
& ,  %  9 % $  %  8.,   
:
& ,  %   $  )  ." $  ; < (   72$( 7  = > ?
:
<   ! "3 ,  & (   %  ; @ A ! "#B )     $ ."#,   3- $ ) $ C ? 
D
D
AloMundo.java

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

Pg.

No programa acima a primeira linha denota um comentrio. A segunda linha denota a visibilidade
da classe sendo implementada, nesse caso pblica. Obrigatoriamente o nome de classe aparecendo
aqui deve ser o mesmo nome do arquivo gravado no disco sem a extenso java". Isto quer dizer
que, se o arquivo tem o nome de disco teste1.java ento esta linha teria que ser: public class
teste1.

A linha public static void main(String args[]) deve estar presente na classe principal de todo
programa Java. Isto quer dizer que seu programa ter apenas uma vez este mtodo independente do
nmero de classes que voc esteja utilizando. Este mtodo o principal (main) por onde o
interpretador comea a executar o seu programa. O modificador void quer dizer que este mtodo
no retorna nenhum valor. J o modificador static quer dizer que este mtodo esttico, ou seja,
no mudar durante a execuo do programa.

Os parmetros dentro dos parnteses String args[] padro, ou seja, o modo que o programador
tem de passar algum argumento para um programa Java via linha de comando. Isto ser visto em
mais detalhes em momento mais propcio.

Todo bloco de cdigo delimitado por chaves { e }. A prxima linha um comando ao


interpretador para imprimir na tela a linha Bem-vindos ao mundo Java. Caso fosse desejado
imprimir mais linhas poder-se-ia repetir inmeras vezes o comando acima mudando apenas o
contedo dentro das aspas ou, de forma mais elegante, apenas ir concatenando strings dentro das
aspas com a primitiva \n. Como no exemplo abaixo:
<   ! "3 ,  & (   %  ; @ A ! "#B )     $ ."#,   3- $ ) $  $ ) ( $ " $ 2 !     C ? 
As principais seqncias de escape em uma cadeia de caracteres:
 ) $.%   ' $

 $ , % $  
(
! (  2 !# $( ( 
0 "#& (  "# ($. $( ( $.  ) ! (   $2 !  ( 2 !  , $2 $  !  $2 !# $( $  ! ( ! 

0 "#& (  "# (2 $( $  ! ( !#$  & $
C
Caracteres de escape

JAVA, programando rumo ao futuro!

//

Anderson R. Rocha e Alexandre H. V. Soares

Pg.

(  7( $" $3%  8.,    2( $     - $ ) $

 "#& (  $ ) $      7 -

&   $ ! 

& ,  %  9 % $  %  8.,    2( $    


:
& ,  %   $  )  ." $  ; < (   72$( 7  = > ?
:
-  &   $ !   '  82!   $ 7 ! * $%  7;  , % % @ A ! "#B )      #$ ."#,   3  - $ ) $ C ? 
D
D
AloMundoGrafico.java

O programa acima produz o mesmo efeito do anterior, entretanto, a sada agora feita atravs de
uma caixa de dilogo message dialog. O primeiro campo da mensagem acima indica que esta
janela no tem um componente pai da a primitiva null.

Toda vez que se for utilizar componentes no padres da linguagem, como os componentes grficos
deve-se importar os pacotes necessrios para o seu funcionamento. Isto feito pela instruo
import xxx onde xxx o nome do pacote a ser importado.

 
 


        
#

    
< ,  ($  
8., %  & %   $  
* )   
8%, , % 

     !  "  

 #$
B'
A 8
* +

#"  3<

    


%#&$
)('
A 6 8
* /

.- + <

Correspondncia Aritmtica

 
   /
0 !1
 
 

 0 !1
 
 % &


 
   /
5 
  2
 /
6
7

 5 
  2
  &


6
7
6 
7 

2
/ 

    % 2   





* 2 +
* /
    % 2 +  



* 6 +
* 7
* 6  ++
* 7  +

3  !2  4  
 
 2  
* 13 7, $% $
* 1#  ! ( !  !#+  ! +
3  !2  4  
 
 2  
* 13" $ (+, ! +
* 13" !  (+, !
* 13" $ (,3 7+ , $% $ +
* 13" !  (,3 7, $% $ +

Operadores de igualdade e relacionais

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

Pg.

A linguagem Java oferece tambm um conjunto de operadores de incremento e decremento como


forma de acelerar certas operaes. Os principais so:

0  
 
#%#
BB
# 
3

    
* #%#
* BB
* 3# 
* B
* 6
* /

B

6 
/ 

3 *  ! 2  *4   #
  
*  * ( 
*  * #
*  * #(
*  * 6
*  * /

Operadores de incremento e decremento em Java

Tipos em Java:
0  !  ( B   . "#& % !
A !
0  !  (   B    "#& % !
< ' (
0
0  !  (   B    "#& % !
0 ! ( 
 7
   B    "#& % 
 % $
 
  % , , $ !  B  
 ,  % !
 
  % , , $ !
  B  

" !  2 !   $ 


" !  2 !   $ 

" !  2 !   $ 

 !   $  $
B  
0 $  
0 $  

$
B  .$ 1  $
$
B  $  .$ 1  $ $
$
B   $  .$ 1   $   $
 $ 
    $ $ .$ 
1    $  

  $ $  $

No existem especificadores de tipos como unsigned, todos os tipos inteiros tm sinal. Valores
literais: O que voc v nem sempre o que voc tem: Um valor como 299792458 considerado int
como padro, se voc quer atribuir esta constante a um long, faa o type cast explicitamente:

 72$
3; %  7 ? 

$   / / $.( !  !  !2 0

Ou ento use uma terminao em L para indicar que o nmero deve ser representado como long:
%  72$ 9  $    / / , "#    , % 
Para indicar valores octais anteceda-os com um zero: 0444 , j para valores hexadecimais antecedaos com 0X ou 0x, exemplo: 0xBCD4.
Para finalizar esta seo vamos ver como se poderia passar argumentos para um aplicativo Java via
linha de comando.
Exemplo de passagem de trs argumentos de linha de comando para um programa Java:
$ ) $3 !  !#@  !   C " !
Interrompa sua leitura agora e experimente passar argumentos para um dos programas criados
anteriormente, os argumentos obviamente sero ignorados pelo programa e este se comportar da
mesma forma que antes.

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

Pg.

O vetor de Strings o argumento do mtodo main que normalmente chamvamos de String args[]:
& ,  %   $  )  ." $  3   2 !
 ! /      

& ,  %  9 % $  82  ( $ ( 7, " !   


:
& ,  %   $  )  ." $  ; < (   72$( 7  = > ?
:
 ( ;      7 $( 7   % !  7 '  #%#?
:
<   ! "3 ,  & (   %  ; @ ( 7, " !  2C#4 #9C
@
D
D
D

$( 7  =  > ? 

MostraArgumentos.java

Resultado do programa para a chamada:


$ ) $ 82  ( $ ( 7, " !   9 $   $   .@ $( 7, " !  3 C

( 7,
" !  2
 
 $   $   
( 7,
" !   

( 7,
" !  3
 
$( 7,
" !  3
 
O termo args.length retorna o comprimento do vetor de Strings, este valor usado para iterar sobre
os argumentos que so Strings armazenadas em args[i]. Perceba que as aspas fazem com que nomes
separados por espaos sejam considerados um s argumento.

Os argumentos passados para seu programa so gravados em um vetor de Strings, para usar o
argumento 3 que ficou armazenado como String, na forma de inteiro, preciso primeiro convert-lo
para inteiro. Isto pode ser feito, no caso do nosso exemplo, atravs de uma chamada a:
0  ! 7 ! (  & $(  ! 0  ; $( 7  =  > ? 

A operao contrria a que foi feita :


0  ! 7 ! (   < (   7;   $ ? 
O mtodo parseInt aceita tambm um segundo argumento que a base em que o nmero est
representado na String.

5 Introduo aos applets JAVA


Um applet um programa Java que executa no Appletviewer (um utilitrio para teste de applets que
vem na sute J2SDK). O appletviewer executa um applet quando um documento hipertexto html
contendo applet, aberto no appletviewer.

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

Pg.

10

Para falar em applets temos que dar uma noo rpida antes de orientao a objetos.

A orientao a objetos uma forma natural de pensar o mundo e de escrever programas de


computador. Os objetos tm atributos (como tamanho, forma, cor, peso e assim por diante) e eles
manifestam comportamentos. Objetos diferentes podem ter muitos dos mesmos atributos. Para
entender melhor, imagine uma classe como um esqueleto de um ser e o objeto como o ser com vida.
A partir do esqueleto pode-se ter vrios seres com vida.

Bom, retornando aos applets vamos analisar um inicialmente e, logo aps, introduzir os conceitos
baseados nesse exemplo:

/ / " & (  " !  ( 2$& & % ! ! " - $ ) $


 "#&  (  $ ) $      7 - & & % !  / /  "#& ( $2$2 % $   ! - & & % !
 "#&  (  $ ) $ $   2( $& '     / /  "#& ( $2$2 % $   !2( $& '   

& ,  %  9 % $  9 (  " !  (  & & % ! !  !   - 


 & & %!
:
& ,  %  )  .& $  ; 2( $& '   
 7 ?
:
7 ( $ < (   7; @ - $ ) $ & (  7 ( $" $  .
 (,
" 2$  , , (  C     ? 
D
D
PrimeiroApplet.java

As instrues import ... dizem ao compilador onde encontrar as classes exigidas para compilar
esse applet Java. Essas linhas especficas dizem ao compilador que a classe JApplet est no
pacote javax.swing.

Toda vez que houver a necessidade de desenhar retas, crculos, retngulos, ovais, strings de
caracteres... deve-se importar o pacote Graphics.

A linha public class PrimeiroApplet extends JApplet diz que esta classe ser uma applet. Toda vez
que voc desejar fazer um applet deve-se estender tal classe.

O mtodo paint um dos trs mtodos (comportamentos) que seguramente so chamados


automaticamente para voc quando qualquer applet comea a ser executado. Esses trs mtodos so
init, start e paint e so seguramente chamados nessa ordem. Geralmente, no obrigatoriamente, no

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

Pg.

11

mtodo init deve-se declarar as variveis, no start inicializ-las e no paint executar as operaes
e/ou transformaes desejadas.

Deve-se observar que em qualquer applet o mtodo paint substitui o mtodo public static void
main obrigatrio em todos os aplicativos. Portanto, colocar em um applet o mtodo main pode
trazer erros a no ser que voc esteja desenvolvendo um aplicativo-applet. Nesse caso, isto deve ser
desenvolvido segundo alguns critrios.

O mtodo drawString(xxx, 25, 35) diz que deve-se desenhar a string xxx nas coordenadas
(X = 25, Y = 35). Lembrando que em qualquer applet a posio ( X = 0, Y = 0) fica na parte
superior esquerda.

Como dito, todo applet precisa de um arquivo html para cham-lo execuo. Segue o arquivo
capaz de chamar o applet PrimeiroApplet.java" anteriormente explicado:
7 ' "#% 6
7 $& & % !    ! C (  " !  (  & & % !   % $   C  '  ' !  7' 9 6
7 / $& & % ! 6
7 / ' "#% 6
PrimeiroApplet.html

//

, ( 2$& & % ! ! " - $ ) $

 "#&  (  $ ) $      7 - & & % !  / /  "#& ( $2$2 % $   ! - & & % !
 "#&  (  $ ) $ $   2( $& '     / /  "#& ( $2$2 % $   !2( $& '   
& ,  %  9 % $    
:
& ,  %  )  .&
:
7 ( $    !
7 ( $    !
7 ( $ < (  
D
D

' $ !  !   - & & % !

$  ; 2( $& '   7 ?


;          ? 
;        ? 
7; @ - $ ) $ & (  7( $" $  .( , " 2$  , , (  C ?    ? 
Linhas.java

Os dois primeiros parmetros de drawLine indicam a coordenada de incio (X,Y) da linha e os


dois ltimos a coordenada de final da linha (Xfinal e Yfinal).

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

Pg.

12

6 Estruturas de controle
Normalmente, instrues em um programa so executas uma aps a outra na ordem em que so
escritas. Isso chamado de execuo seqencial. Vrias instrues de Java que discutiremos a
seguir permitem que o programador especifique que a prxima instruo a ser executada pode ser
outra que no a prxima na seqncia. Isso chamado de transferncia de controle.

6.1. A estrutura de seleo if


Uma estrutura de seleo utilizada para escolher entre cursos de ao alternativos em um
programa. Por exemplo, suponha que a nota de aprovao em um exame seja 60 (em 100). Ento, a
instruo em pseudocdigo:
< 2
! ;   ?$.  $2 2$% ,  213" $ ( 2+, !#,3 7, $% $ 
0 "#& (  " $2@ & (  ) $   C
determina se a condio nota do aluno maior do que ou igual a 60 verdadeira ou falsa.
Lembre-se que pseudocdigo no uma linguagem de programao real. A instruo dada
anteriormente pode ser reescrita em Java da seguinte maneira:

  ;   $ *  ,  $ ! 6    ?
<   ! "3 ,  & (   %  ; @ & (  ) $   C ? 
6.2. A estrutura de seleo if-else
A estrutura de seleo if executa uma ao indicada somente quando a condio avaliada como
verdadeira (true); de outro modo a ao pulada. A estrutura de seleo if-else permite ao
programador especificar que uma ao diferente ser executada quando a condio for verdadeira e
quando a condio for falsa. Por exemplo, a instruo em pseudocdigo:
< 2
! ;   ?$.  $2 2$% ,  213" $ ( 2+, !#,3 7, $% $ 
0 "#& (  " $2@ & (  ) $   C
< !   ;! % ! ?
0 "#& (  " $2@
! & (  ) $   C
imprime Aprovado se a nota do aluno for maior do que ou igual a 60 e imprime Reprovado se a
nota do aluno for menor do que 60. Nos dois casos, depois que ocorre a impresso, a prxima
instruo em pseudocdigo na seqncia executada.

A estrutura if-else em pseudocdigo anterior pode ser escrita em Java da seguinte maneira:
  ;   $*  ,  $ ! 6    ?
<   ! "3 ,  & (   %  ; @ & (  ) $   C ? 
! % !
<   ! "3 ,  & (   %  ; @
! & (  ) $   C ? 

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

Pg.

13

Quando for necessrio colocar mais de uma instruo dentro do corpo de um if ou else esta deve vir
entre chaves.

Outra observao importante refere-se ao fato de muitos programas precisarem de muitas instrues
if-else aninhadas. Isto permitido em Java, entretanto o programador deve prestar ateno que os
elses so casados com os ifs mais prximos. Veja o exemplo em pseudocdigo abaixo:

< !#$.  $2 2$% ,  213" $ ( 2+, !#,3 7, $% $
0 "#& (  " $2@  C
< !  3< !#$.  $2 2$% ,  213" $ ( 2+, !#,3 7, $ % 
$ 
0 "#& (  " $2@ A C
< !  3< !#$.  $2 2$% ,  213" $ ( 2+, !#,3 7, $ % 
$ $ 
0 "#& (  " $2@ 'C
< !  3< !#$.  $2 2$% ,  213" $ ( 2+, !#,3 7, $ % 
$  
0 "#& (  " $2@ *C
< !  
0 "#& (  " $2@ .

(
! & ( ) $   C
Se a nota do aluno for maior do que ou igual a 90, as primeiras quatro instrues sero verdadeiras,
mas somente a instruo Imprima A do primeiro teste ser executada. Depois disso a estrutura
seno mais externa ser pulada e o programa continuar a partir da prxima instruo. O
pseudocdigo acima pode ser escrito em Java da seguinte maneira:

  ;   $* % , 
<   ! "3 ,  &
! %  !3  ;   $*
<   ! "3 ,  &
! %  !3  ;   $*
<   ! "3 ,  &
! %  !3  ;   $*
<   ! "3 ,  &
! % !
<   ! "3 ,  &


(
% ,
(
% ,
(
% ,
(


% ;@
 
% ;@
 
% ;@
 
% ;@



?
 C ?
6   ?
A C ?
6  $?
'C ? 
6  ?
*C ? 

(   %  ; @
#B
! & (  ) $   C ? 

6.3. A estrutura de repetio while


Uma estrutura de repetio permite ao programador especificar que uma ao ser repetida
enquanto alguma condio permanecer verdadeira. A instruo em pseudocdigo:
 +, $  ; '  % ! ?' , ) ! (" $  !  ! " "#  ' $.%   $2 !# "#& ( $ 
'"#& ( !#.& ( ,   " . ! "4!3(   +, ! B 2 !3"#  ' $.%   $
descreve a repetio que ocorre durante um passeio de compras. A condio enquanto houver mais
itens em minha lista de compras pode ser verdadeira ou falsa. Se ela for verdadeira, ento a ao
Compre o prximo item e risque-o de minha lista executada. Esta ao ser executada

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

Pg.

14

repetidamente enquanto a condio permanecer verdadeira. A(s) instruo(es) contida(s) na


estrutura de repetio while constitui(em) o corpo do while. Este corpo pode ser uma instruo
nica ou uma instruo composta. No caso de uma instruo composta esta deve aparecer dentro de
chaves.

interessante observar que no colocar no corpo do while uma ao que por fim far com que a
condio nunca se torne falsa um erro de lgica e normalmente esta estrutura entrar em loop
infinito, ou seja, nunca terminar.

Para exemplificar o uso do while em Java considere um programa para imprimir na tela os nmeros
pares de 1 a 10:
   , " ! (    

'  % !2;  , " ! (  7    ?


:
  ;  , " ! ( - 2
 4 ?
<   ! "3 ,  & (   %  ;  , " ! (  ? 
 , " ! (  #%# 
D
Enquanto numero for menor que 10 o seu corpo executado. Cada vez que o corpo executado
verificado se este nmero par atravs da estrutura condicional if. Em caso verdadeiro o nmero
impresso, caso contrrio nada feito. Em todas as vezes a varivel numero incrementada em 1.

OBS.: Princpios de repetio controlada por contador


As repeties controladas por contador requerem:
1) O nome de uma varivel de controle (ou contador de lao)
2) O valor inicial da varivel de controle
3) O incremento (ou decremento) pelo qual a varivel de controle ser modificada a cada
passagem pelo lao (tambm conhecido como cada iterao do lao).
4) A condio que ir testar o valor final da varivel de controle ( isto , se o lao deve
continuar ou no).
Uma repetio controlada por contador foi vista na subseo while onde devia ser impresso os
nmeros pares de 1 a 10. Entretanto, na maioria das vezes quando se deseja utilizar contadores deste
tipo os programadores optam por utilizar estruturas como o for.

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

Pg.

15

6.4. A estrutura de repetio for


Esta estrutura cuida de todos os detalhes de uma repetio controlada por contador. Vamos verificar
um exemplo onde o mesmo while visto anteriormente ser substitudo por:
;    , " ! (     , " ! (  7    , " ! (  #%#?
:
  ;  , " ! ( 
 - 24 ?
<   ! "3 ,  & (   %  ;  , " ! (  ? 
D

 (

produzindo o mesmo efeito anterior.

A estrutura for dividida da seguinte forma for (1;2;3) {4}. A parte 1 responsvel por declarar e
inicializar a varivel de controle. A parte 2 a condio de trmino. A parte 3 o incremento ou
decremento do lao. E, finalmente, a parte 4 que representa o corpo da estrutura ou lao.

6.5. A estrutura de seleo mltipla switch


Discutimos a estrutura if de seleo nica e a estrutura if-else de seleo dupla. Ocasionalmente,
um algoritmo conter uma srie de decises em que uma varivel ou expresso testada
separadamente para cada um dos vrios valores integrais constantes (isto , valores dos tipos byte,
short, int, long e char) que ela pode assumir e aes diferentes so tomadas. Java fornece a
estrutura de seleo mltipla switch para tratar tal tomada de deciso. O applet a seguir demonstra o
desenho de linhas, retngulos ou ovais baseados no nmero que o usurio digita em um dilogo de
entrada.
/ /  !  ! <   '  $ ) $
/ / *!  !  ' $  
  ( " $ 

 "#&  (  $ ) $  $   2( $& '    


 "#&  (  $ ) $      7 6 

& ,  %  9 % $   !  ! <   '#!  !   - & & % !


:
   &  $ 
& ,  %  )  .   ; ?
:
< (   72!  ( $  $ 

!  ( $  $  -  &   $


 ( ! #& $( $2
 ( ! & $( $2
 ( !  & $( $2

! 
! !
! !
! !

' 
 '
 '
 '

 0  & , * $%  7;


$(%   ' $   #
$(( !  7, %   
$( ) $   ? 


&  $   0  ! 7 ! (  & $(  ! 0  ; !  ( $  $3? 

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

Pg.

16

& ,  %  )  .& $  ; 2( $& '   73?


:
 ( ;   4 7   #%# ?
:
   ' ; &  $ 3?
:
$ ! 

7 ( $    ! ;         #4 6  2? 


 ( ! $ 
 $  ! 

7 ( $ 
!  ;  #4 6     #4 6   
 #4 6    #4 6  2? 
 ( ! $ 
$ ! 

7 ( $ 
 .) $% ;  #4 6     #4 6   
 #4 6    #4 6  2? 
 ( ! $ 
 !  $, %

-  &   $ !   '  82!   $ 7 ! * $%  7;  , % %   !  ( $  $213  ) 5%   $ ? 
D
D
D
TesteSwitch.java

O arquivo TesteSwitch.html correspondente a este applet :


7 ' "#% 6
7 $& & % !    ! C  !  ! <   '   % $   C  '9   ' !  7' 9   6
7 / $& & % ! 6
7 / ' "#% 6
TesteSwitch.html

No programa anterior, aninhada na estrutura for existe a estrutura switch que desenha formas
baseadas no valor de um inteiro dado como entrada. Quando o fluxo de controle alcana a estrutura
switch, a expresso de controle (opcao, neste exemplo) que segue a palavra-chave switch entre
parnteses avaliada. O valor dessa expresso (que deve ser avaliada como uma expresso integral
tal como byte, shor, char ou int) comparado com cada rtulo case. Suponha que o usurio digitou
o inteiro 2 como sua opo. Assim, 2 comparado com cada rtulo case no switch. Se uma
coincidncia ocorre (case 2:), as instrues para esse case so executadas.

A instruo break faz com que o fluxo de controle do programa prossiga com a primeira instruo
depois da estrutura switch. Portanto, esquecer de colocar o break aps instrues dentro de um case
pode levar a erros lgicos em seu programa.

Finalmente, caso no haja nenhuma coincidncia entre o valor testado no switch e os cases
equivalentes a clusula default ser executada.

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

Pg.

17

6.6. A estrutura repetio do-while


Esta estrutura muito semelhante estrutura while. Na estrutura while a condio de continuao
do lao testada no comeo do lao antes do corpo do lao ser executado. A estrutura do-while, por
sua vez, testa a condio de continuao do lao de pois de o corpo do lao ser executado; portanto,
o corpo do lao sempre executado ao menos uma vez. Quando um do-while termina, a execuo
continua com a instruo depois da clusula while. Observe que no necessrio utilizar chaves na
estrutura do-while se houver apenas uma instruo no corpo. Entretanto, as chaves so normalmente
includas para evitar confuso entre as estruturas while e do-while. As instrues:
'  % ! ;      ?
 
  ( ,  
  (,  
'  % ! ;      ? 
podem ser confundicas caso no se utilize chaves.

6.7. As instrues rotuladas break e continue


A instruo break pode interromper apenas uma estrutura while, do-while, for ou switch que a
envolve imediatamente. Para interromper um conjunto aninhado de estruturas, voc pode utilizar a
instruo rotulada break. Embora Java permita este tipo de coisa procure utilizar a clusula break
apenas dentro de switches pois, do contrrio, voc estar lanando mo de um pssimo estilo de
programao.

O mesmo vlido para instrues do tipo continue. Este tipo de instruo serve para pular um
passo e continuar a partir do prximo. Por exemplo o cdigo:
;   4 7  #%#?
:
  ; 2  ?
    , ! 
<   ! "3 ,  & (   %  ;  ? 
D

 (

imprimir na tela apenas os nmeros 1,2,4 e 5, pois caso encontre i = 3 este passo ser pulado
(continue).

J o cdigo:
;   4 7  #%#?
:
  ; 2  ?
 ( ! $ 
<   ! "3 ,  & (   %  ;  ? 
D

 (

imprimir na tela apenas os nmeros 1 e 2 dado que ir parar (break) quando i for igual a 3.

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

Pg.

18

7 Mtodos e recursividade
7.1. Introduo
A experincia mostrou que a melhor maneira de desenvolver e manter um programa grande
constru-lo a partir de pedaos pequenos e simples, ou mdulos.

Os mdulos em Java so chamados de mtodos e classes. Os programas Java so escritos


combinando novos mtodos e classes que o programador escreve com mtodos pr-empacotados
e classes disponveis na Java API (biblioteca de classes Java) e em vrios outros mtodos e
bibliotecas de classe. A Java API fornecida como parte do Java Developers Kit (JDK).

Um mtodo Java definido da seguinte forma:


 & B  B ) $% ( B  ! B ( ! (  . " ! B  B " !    ; %   $B  ! B & $( $" ! (  ?
:
 !  % $( $  ! !3   ( ,  ! 9;  ( & 2 ." 1    ? 
D
O tipo de valor de retorno void indica que o mtodo no retorna um valor.

H trs maneiras de retornar o controle para o ponto em que o mtodo foi invocado. Se o mtodo
no retornar um resultado, o controle retornado quando a chave direita de final de mtodo
alcanada ou executando a instruo return;. Se o mtodo retornar um resultado, a instruo
return expresso; retorna o valor da funo ao chamador.

7.2. Durao dos identificadores


A durao de um identificador o perodo durante o qual esse identificador existe na memria. O
escopo de um identificador onde um identificador pode ser referenciado num programa. Os
identificadores que representam varivies locais (que so declaradas no corpo do mtodo) em um
mtodo tm durao automtica. Elas existem enquanto o bloco em que elas esto est ativo e so
destrudas quando o bloco em que elas so declaradas termina.

Variveis e referncias de durao esttica existem a partir do ponto em que a classe que as define
carregada na memria para execuo, at a trmino do programa.

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

Pg.

19

7.3. Regras de escopo


O escopo de um identificador de uma varivel, referncia ou mtodo a parte do programa em que
o identificador pode ser referenciado. Uma varivel ou referncia local declarada em um bloco pode
ser utilizada somente nesse bloco ou em blocos aninhados dentro desse bloco. Os escopos para um
identificador so escopo de classe e escopo de bloco. H tambm um escopo especial o escopo de
mtodo para rtulos utilizados com as instrues de controle break e continue.

Os mtodos e variveis de instncia de uma classe tm escopo de classe. Os identificadores


declarados dentro de um bloco tm escopo de bloco. Ver anexo 7- I.

7.4. Recurso
Um mtodo recursivo um mtodo que chama a si prprio direta ou indiretamente, atravs de outro
mtodo. Para a recurso so necessrios dois itens: um caso base (caso em que o mtodo retorna
uma resposta) e um passo de recurso (passo onde o mtodo se chama). Ver anexo 7- II.

7.5. Sobrecarga de mtodo


Java permite que vrios mtodos com o mesmo nome sejam definidos, contanto que esses mtodos
tenham diferentes conjuntos de parmetros. Isso chamado de sobrecarga de mtodo. Mtodos
sobrecarregados so distinguidos por sua assinatura. Ver anexo 7- III.

8 Vetores (arrays)
8.1. Introduo
Um array um conjunto de posies na memria que possuem o mesmo nome e o mesmo tipo.
Qualquer um desses elementos pode ser referenciado fornecendo-se o nome do array seguido pelo
nmero da posio do elemento particular entre colchetes ( [ ] ). O primeiro elemento em cada
array o zero-simo elemento.

Cada array em Java conhece seu prprio comprimento, que sabido pela expresso
 " !     ) ! (  % !  7 '

Um array declarado da seguinte forma:


 &      $( ( $ 9 " !     $( ( $  = > 

1

 &      $( ( $  = > " !     $( ( $  

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

Pg.

20

E alocado como todo objeto Java pela expresso


 " !     $( ( $ #  !   &      $( ( $  = $" $ ' 3> 
5(   $( ( $  &   ! "  ! ( !  % $( $   & ! % $2!  & ( !   
 &      $( ( $  = > " !     $( ( $    " !     $( ( $    " !     $( ( $   
Os elementos de um array podem ser declarados e inicializados na declarao de array seguindo a
declarao com um sinal de igual e uma lista inicializadora includa, separada por vrgulas entre
chaves ( {} ). Nesse caso, tamanho do array determinado pelo nmero de elementos na lista
inicializadora. Por exemplo, a instruo:
  = > :2        D 
cria um array de cinco elementos com os subscritos 0, 1, 2, 3, 4. Observe que a declarao
precedente no requer o operador new para criar o objeto de array isso fornecido
automaticamente pelo compilador quando encontra uma declarao de array que inclui uma lista
inicializadora.

Arrays podem conter qualquer tipo de dados. importante lembrar que em um array do tipo de
dados primitivo cada elemento contm um valor do tipo de dados declarado do array. Entretanto,
em um array do tipo de dado no primitivo, cada elemento do array uma referncia a um objeto
do tipo de dados do array. Ver anexo 8 - I.

8.2. Arrays multidimensionais


Arrays com dois subscritos so utilizados som freqncia para representar tabelas de valores
consistindo em informaes em linhas e colunas. Para identificar um elemento de tabela especfico,
devemos especificar os dois subscritos por conveno, o primeiro identifica a linha do elemento e
o segundo identifica a coluna do elemento. Os arrays que requerem dois subscritos para identificar
um elemento especfico so chamados de arrays bidimensionais. Java no suporta diretamente
arrays multidimensionais, mas permite que o programador especifique arrays de um nico
subscrito (unidimensionais) cujos elementos tambm so arrays de um nico subscrito, alcanando
assim o mesmo efeito.

Um array multidimensional com o mesmo nmero de colunas em cada linha pode ser alocado
dinamicamente. Por exemplo, um array 3 por 3 alocado como segue:
  = > = > 
   !    = 2> = 2> 

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

Pg.

21

Assim, como com arrays unidimensionais, os elementos de um array bidimensional so


automaticamente inicializados quando new cria o objeto array.
Um array multidimensional em que cada linha tem um nmero diferente de colunas pode ser
alocado dinamicamente como segue:
  = > = > 
/ / %   $.%   ' $  
   !    = .> = > 
/ / %   $2 % ,  $ & $ ( $.%   ' 
= 2>  !    = 2> 
$  
/ / %   $2 % ,  $ & $ ( $.%   ' $  
=9>  !    = 2> 

O cdigo precedente cria um array bidimensional com duas linhas. A linha 0 tem cinco colunas e a
1 tem trs colunas. Ver anexo 8 - II.

9 Orientao a objeto (OO)


9.1. Introduo
Nesse captulo, discutimos a programao orientada a objetos (POO) e suas principais tecnologias:
herana e polimorfismo.

Herana uma forma de reutilizao de software em que novas classes so criadas a partir de
classes existentes, absorvendo seus atributos e comportamentos e sofisticando-os com as
capacidades que as novas classes exigem.

O polimorfismo permite-nos escrever programas de uma forma geral para tratar uma ampla
variedade de classes relacionadas existentes e ainda a serem especificadas, tornando mais fcil
adicionar novos recursos a um sistema.

9.2. Superclasses e subclasses


Ao se criar uma nova classe, em vez de escrever completamente novas variveis de instncia e
mtodos de instncia, o programador pode determinar que a nova classe deve herdar esses de uma
superclasse definida previamente. A nova classe definida como uma subclasse.

A superclasse direta de uma subclasse a superclasse da qual a subclasse explicitamente herda


(atravs da palavra chave extends). Uma subclasse indireta herdada de dois ou mais nveis acima
na hierarquia da classe.

Com a herana simples, uma classe derivada de uma superclasse. Java no suporta herana
mltipla, mas suporta a noo de interfaces.

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

Pg.

22

Cada objeto de uma subclasse tambm um objeto da superclasse dessa subclasse. Entretanto, o
contrrio no verdadeiro os objetos de superclasse no so objetos das subclasses dessa
superclasse.

9.3. Modificadores
Os modificadores so usados para identificar os nveis de acesso de um atributo. Em Java, deve ser
declarado um modificador para variveis, mtodos e classes.

9.3.1. Modificadores de atributos


Os atributos podem ser declarados com nveis de acesso do tipo:

private: o atributo pode ser acessado somente por mtodos que esto dentro da prpria
classe a qual foi declarada.

protected: o atributo pode ser acessado pela prpria classe e pelas classes que dela
derivam.

public: o atributo pode ser acessado de qualquer classe.

static: os atributos declarados como static possuem apenas uma cpia para todos os
objetos da classe.

Padro (em branco): o atributo pode ser acessado pela prpria classe e por classes
criadas dentro do pacote do qual esta classe pertence.

final: o atributo declarado como uma constante.

volatile: suprime otimizaes do compilador Java.

9.3.2. Modificadores de mtodos

private: o mtodo pode ser acessado somente por mtodos que esto dentro da prpria
classe declarada.

protected: o mtodo pode ser acessado pela prpria classe e pelas classes que dela
derivam.

public: o mtodo pode ser acessado de qualquer classe.

static: o mtodo declarado como static possui apenas uma cpia para todos os objetos da
classe.

Padro (em branco): o mtodo pode ser acessado pela prpria classe e por classes criadas
dentro do pacote do qual esta classe pertence.

native: o mtodo foi feito em outra linguagem (uma linguagem nativa da mquina).

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

Pg.

23

final: um mtodo final no pode ser sobrecarregado.

synchronized: garante que o mtodo ser executado de uma nica vez. Este modificador
bastante utilizado para garantir sincronizao de linhas de execuo, em programao
multithread.

abstract: o mtodo no possui um corpo (no foi codificado). Quando um mtodo


declarado como abstract, a sua classe deve, obrigatoriamente, ser tambm abstract.

9.3.3. Modificadores de classes

private: a classe s pode ser acessada dentro do arquivo fonte no qual foi codificada.

public: permite que classes em arquivos fontes diferentes possam acessar a classe
public. S pode haver uma classe public por arquivo fonte.

abstract: a classe no pode ser instanciada diretamente. A classe declarada como


abstract serve como esqueleto para suas subclasses.

final: a classe no pode ser utilizada como superclasse.

9.4. A referncia super


A referncia super usada para chamar o construtor de uma superclasse. Um construtor de uma
superclasse sempre chamado quando criamos um objeto de uma subclasse. Se no chamamos o
construtor da superclasse explicitamente, o construtor sem argumentos dessa superclasse ser
chamado. Se a superclasse no tiver um construtor sem argumentos, ocorrer um erro de
compilao.

9.5. Sobrescrita (override) de mtodos


Uma subclasse pode redefinir um mtodo de superclasse utilizando a mesma assinatura; isso
chamado de anular ou sobrescrever o mtodo da superclasse.

A referncia super, seguida pelo operador ponto ( . ), pode ser utilizada para acessar a verso
original da superclasse desse mtodo da subclasse.

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

Pg.

24

9.6. O operador instanceof


O operador instanceof usado para determinar se um dado objeto uma instncia da classe
especificada.

9.7. Construtores e finalizadores


9.7.1. Construtor
Um construtor um tipo especial de mtodo chamado pelo sistema no momento da criao de um
objeto. O construtor no possui valor de retorno e usado somente no momento de inicializao do
objeto. Ele inicializa seus atributos de forma a deixar o objeto numa forma consistente. O construtor
deve ter sempre o mesmo nome da classe a qual pertence, e pode ser sobrecarregado.

9.7.2. Finalizador
Cada classe em Java pode ter um mtodo finalizador, que retorna recursos para o sistema. O mtodo
finalizador para um objeto assegura que ser chamado para realizar uma limpeza de terminao no
objeto exatamente antes de o coletor de lixo reivindicar a memria para o objeto. O mtodo
finalizador de uma classe sempre tem o nome finalize, no recebe parmetros e no retorna valor.
Uma classe deve ter apenas um mtodo finalize.

9.8. Polimorfismo
9.8.1. Introduo
A programao polimrfica pode eliminar a necessidade da lgica de switch. O programador pode
utilizar o mecanismo de polimorfismo de Java para realizar a lgica equivalente automaticamente,
evitando assim os tipos de erro geralmente associados com lgica switch.

9.8.2. Vinculao dinmica de mtodo


Suponha que um conjunto de classes de formas como Circulo, Triangulo, Retngulo etc. seja
inteiramente derivado da superclasse Forma. Cada uma dessas classes pode ser dotada com a
capacidade de desenhar a si prpria. Cada classe tem seu mtodo desenhar() e a implementao
desse mtodo diferente em cada uma. Sendo assim, para desenhar qualquer forma, poderamos
chamar simplesmente o mtodo desenhar() da superclasse Forma e deixar o programa determinar
dinamicamente qual subclasse o mtodo desenhar() utiliza com base no tipo de objeto real.

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

Pg.

25

9.8.3. Superclasses abstratas e classes concretas


H casos em que til definir as classes para as quais o programador nunca pretender instanciar
algum objeto. Essas classes so chamadas de classes abstratas.

O nico propsito de uma classe abstrata fornecer uma superclasse apropriada da qual as outras
classes podem herdar interfaces e/ou implementao. As classes da qual os objetos podem ser
instncias so chamadas de classes concretas.

Uma classe tornada abstrata declarando-a com a palavra chave abstract.

9.8.4. Interfaces
Uma interface geralmente utilizada em lugar de uma classe abstract quando no h
implementao padro a herdar isto , sem variveis de instncia e sem implementaes de
mtodo padro. Assim como as classes abstract public, as interfaces so, em geral, tipos de dados
public.

Uma definio de interface iniciar com a palavra-chave interface e contm um conjunto de mtodos
public abstract. As interfaces tambm podem conter dados static final public. Para utilizar uma
interface, uma classe deve especificar que ela implementa (implements) a interface e a classe deve
definir cada mtodo na interface com o nmero de argumentos e o tipo de retorno especificado na
definio da interface.

Para implementar mais de uma interface, fornea simplesmente uma lista de nomes de interface
separados por vrgulas depois da palavra-chave implements na definio da classe.

9.9. Definio de classe interna


9.9.1. Introduo
Java fornece um recurso chamado de classes internas em que as classes podem ser definidas dentro
de outras classes. Tais classes podem ser definies completas de classe ou definies de classe
interna annima (classe sem nome). As classes internas so usadas principalmente no tratamento de
eventos.

As classes internas podem ser private, proteted ou public.

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

Pg.

26

permitido ao objeto da classe interna acessar diretamente todas as variveis de instncia e os


mtodos do objeto de classe externa.

Como uma classe interna annima no tem nome, um objeto da classe interna annima deve ser
criado no ponto onde a classe definida no programa.

9.9.2. Notas sobre definio de classe interna


1. Compilar uma classe que contm classes internas resulta em um arquivo .class separado
para

cada

classe.

As

classes

com

nomes

tm

nome

de

arquivo

NomeDaClasseExterna$NomeDaClasseInterna.class. As classes internas annimas tm o


nome de arquivo NomeDaClasseExterna$#.class, onde # inicia em 1 e incrementado para
cada classe interna annima encontrada durante a compilao.
2. As classes internas com nomes de classe podem ser definidas como public, protected, com
acesso de pacote ou private, e esto sujeitas s mesmas restries de uso que outros




membros de uma classe.


Para acessar a referncia this da classe externa, utilize NomeDaClasseExterna.this.
A classe externa responsvel por criar objetos de suas classes internas. Para criar um
objeto de classe interna de outra classe, primeiro crie um objeto da classe externa e atribua-o
a uma referncia (que chamaremos de ref). Ento utilize uma instruo na seguinte forma

'

" ! *$ 9% $   !

! (  $ " ! *$ 9


' % $   ! 0  ! (  $.( !  0  ! (  $  ( !   2   " ! *$ 9' % $   ! 0  ! (  $; ? 

5. Uma classe interna pode ser declarada static. Uma classe static interna no requer um objeto
de sua classe externa para ser definida (ao passo que uma classe no-static, sim). Uma classe
static interna no tem acesso a membros no-static da classe externa.

9.10. Classes invlucro de tipo para tipos primitivos


Cada um dos tipos primitivos possui uma classe invlucro de tipo, que so as classes: Character,
Byte, Short, Integer, Long, Float, Double e Boolean. Cada classe invlucro de tipo permite
manipular tipos de dados primitivos como objetos da classe Object.

9.11. Exemplo: ver anexo 9 - I.

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

Pg.

27

10 Componentes bsicos de uma interface grfica (GUI)


10.1. Introduo
Os componentes tratados neste captulo esto contidos no pacote javax.swing, que so os
componentes mais novos da interface do Java 2. Estes so escritos, manipulados e exibidos
completamente em Java (componentes Java puros).

Os componentes originais do pacote java.awt (Abstract Window Toolkit) esto diretamente


associados com as capacidades de GUI da plataforma local.

10.2. Container
Um Container uma coleo de componentes relacionados. A classe Container define o conjunto
de mtodos que podem ser aplicados a um objeto de qualquer subclasse de Container.

10.3. JLabel
Os rtulos fornecem instrues de texto ou informaes sobe uma GUI e so com a classe JLabel
subclasse de JComponent. Um rtulo exibe uma nica linha de texto de leitura.

10.4. JTextField
Um JTextField uma rea de uma nica linha em que o texto pode ser inserido via teclado pelo
usurio ou o texto pode ser simplesmente exibido. Quando o usurio digita os dados e pressiona a
tecla Enter, um evento disparado.

10.5. JButton
Um boto um componente em que o usurio clica para acionar uma ao especfica e definido
pela classe JButton.

10.6. JCheckBox
A classe JCheckBox define uma caixa de seleo, que um boto que possui dois estados:
selecionado ou no.

10.7. JRadioButton
A classe JRadioButton define botes de rdio, que diferem de caixas de seleo pelo fato de apenas
um boto do grupo poder ser selecionado por vez.

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

Pg.

28

10.8. JList
Uma lista exibe uma srie de itens em que o usurio pode selecionar um ou mais destes. As listas
so criadas com a classe JList , que herda da classe JComponent. A classe JList suporta listas de
uma nica seleo e listas de seleo mltipla.

Uma lista SINGLE_INTERVAL_SELECTION permite seleo de um intervalo contguo de itens


na lista clicando no primeiro item, ento mantendo pressionada a tecla Shift enquanto clica no
ltimo item para selecionar no intervalo. Uma lista MULTIPLE_INTERVAL_SELECTION
permite

seleo

contnua

de

intervalo

como

descrito

para

uma

lista

SINGLE_INTERVAL_SELECTION, e permite que itens variados sejam selecionados mantendo


pressionada a tecla Ctrl enquanto se clica em cada item para selecionar. Para remover a seleo de
um item, basta manter pressionada a tecla Ctrl enquanto clica sobre o item pela segunda vez.

A classe JList no fornece automaticamente uma barra de rolagem se houver mais itens na lista que
o nmero de linhas visveis. Nesse caso, um JScrollPane utilizado para fornecer a capacidade de
rolagem automtica para a JList.

10.9. JFrame
A classe JFrame fornece os atributos e comportamentos bsicos de uma janela.

10.10. Gerenciador de leiaute


Os gerenciadores de leiaute so fornecidos para organizar componentes GUI em um continer para
propsitos de apresentao. Os gerenciadores de leiaute fornecem capacidades bsicas de leiaute
que so mais fceis de utilizar que determinar a posio e o tamanho exatos de cada componente
GUI.

Alguns gerenciadores de leiaute: FlowLayout, BorderLayout, GridLayout, BoxLayout, CardLayout,


GridLayout.

10.11. Painis
GUIs complexas exigem que cada componente seja colocado em uma localizao exata. Elas
consistem, freqentemente, em mltiplos painis com os componentes de cada painel organizados
em um leiaute especfico. Os painis so criados com a classe JPanel.

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

Pg.

29

10.12. Tratamento de eventos


Para processar um evento numa interface grfica com o usurio, o programador deve realizar duas
tarefas principais registrar um ouvinte de eventos e implementar um tratador (handler) de eventos.
Um ouvinte de evento um objeto de uma classe que implementa uma ou mais das interfaces
ouvintes de eventos dos pacotes java.awt.event e javax.swing.event.

Um objeto ouvinte de eventos ouve tipos especficos de eventos gerados no mesmo objeto ou por
outros objetos em um programa. Um tratador de eventos um mtodo que automaticamente
chamado em resposta a um tipo de evento em particular. Cada interface ouvinte de eventos
especifica um ou mais mtodos de tratamento de evento que devem ser definidos na classe que
implementa a interface ouvinte de eventos.

10.13. Exemplo: Ver anexo 10 - I.

11 Tratamento de excees
11.1. Introduo
O tratamento de excees permite lidar com as condies anormais de funcionamento de seu
programa. Fazer uso deste recurso tornar seu software mais robusto, seguro e bem estruturado. So
exemplos de condies anormais: acesso a um ndice invlido de um vetor, tentativa de uso de um
objeto no inicializado, falha na transferncia de uma informao, uma falha no prevista, etc.

Sem as facilidades oferecidas pela linguagem seria muito difcil lidar com essas condies
anormais, isto pode ser observado nos deficientes meios de tratamento de erros usados em
linguagens que no fornecem exception handling, tratamento de excees.

Nesse sentido, Java uma linguagem que faz forte uso do conceito de tratamento de excees. Em
algumas linguagens que implementam esse tratamento perfeitamente possvel programar sem usar
esse recurso, mas em Java no. Isto pode ser comprovado pela necessidade de alguns blocos de
cdigo try {} catch {} em muitos programas.

Um dos motivos de o programador Java ter que saber tratamento de excees que os mtodos de
classes definidas na linguagem podem gerar excees e na maioria das vezes o compilador nos
obriga a escrever tratadores (blocos try{} catch{}) para chamadas destes mtodos.

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

Pg.

30

Quando voc for estruturar seu cdigo dessa forma, haver duas aes bsicas que devem ser
tomadas: levantar (jogar) uma exceo e tratar uma exceo. Uma exceo ser levantada quando
for verificada uma condio anormal de funcionamento do programa, ento o mtodo que est
sendo executado imediatamente terminado e o controle passa para o mtodo que o chamou, onde
pode ocorrer um tratador da exceo ou no. Se ocorrer um tratador, na maioria dos casos a exceo
pra de se propagar ali mesmo. Se no ocorrer um tratador outras chamadas de mtodos so
desfeitas, encerradas, podendo culminar no trmino do programa se toda a cadeia de chamada de
mtodos foi desfeita at chegar em main sem que se ache um tratador para esta exceo. Existem
vrios modelos de tratamento de excees. O modelo adotado por Java recebe o nome de:
termination model, justamente por essas terminaes de mtodos.

11.2. Jogando (throw) uma exceo


Mas o que uma jogar uma exceo? suspender a execuo do mtodo atual e passar um objeto
para o bloco catch mais prximo na cadeia de chamadas de mtodos atual. Isto feito atravs da
declarao:
& ,  %  )  ." !   9 ' (  
:
   / / $% 7, "4 ,   7 
D

!

&  

throw como um break para mtodos.

As excees geradas pela linguagem pertencem a uma hierarquia cujo topo a classe Throwable,
imediatamente estendida por Error e Exception. No prximo exemplo voc ver que os tratadores
de exceo so escolhidos comparando a classe da exceo jogada e a classe de excees que o
tratador diz tratar. Assim sendo o tratador:
(
:
/ 6 $% 7 2+, !3&    $27 ! ( $(, " $2!   !  $  6 /
D
 $  '2;        2 ! ( (  ?
:
/ 6 $   !  ! ( $ $" !  2 2! ( ( 2 " &     ) ! % " !  !3  ) $3 !  $  ) $2 !#!  !  ,  
  " !     ' $" $   
6/
D
Tratamento de exceo

Seria capaz de tratar todas as excees que estejam abaixo de Exception (na hierarquia) geradas em
try { }. Dispondo mais de um tratador (bloco catch) em seqncia onde os primeiros s tratam as

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

Pg.

31

classes excees mais baixas da hierarquia, possvel escolher que cdigo de tratamento usar com
cada tipo de exceo gerada.

Por sorte, das excees levantadas pela linguagem, voc como programador s precisar tratar as da
hierarquia

de

Exception.

seguir

iremos

forar

acontecimento

da

exceo

ArrayIndexOutOfBoundsException, atravs de uma tentativa de acesso a um ndice invlido de um


vetor:
/ / '9% $   !3& (     & $%  (     & $%  $ ) $

& ,  %  9 % $  9 (     & $%


:
& ,  %   $  )  ." $  ; < (   2
7 $( 7  = > ?
:
/ / *!  % $( $  ., " ) ! (  "  &     !  =        >
  $ = > # !    = > 
:

(
$ = > . 
/ /  %   ' $2$   " $27 ! ( $2!   !         ! 
 ) 5%     2+, $ ( 
      
/ / +, $% +, ! ( ,  7 2!   (  2$ +,  ;  ! &   #
! $ = > .  ?
/ /  ,   $3 ! ( 52!  !  , $  

D
$ '
:
//
//
D
<  !

;   ! &  #$ ! ?

 + ,  &   ! ( B  ! B  $2$% ! ( $( $% !   !  2$ .,  , 5(  2,3" !  " 


( $ $B % $2 !#$% 7, " $ ( " $

"3 ,  & (   %  ; $ =  > ? 

Tratamento de excees, Principal.java

11.3. Quando usar tratamento de excees


O tratamento de excees deve ser utilizado:

Para processar apenas situaes excepcionais em que um mtodo incapaz de completar


sua tarefa por razes que ele no pode controlar.

Para processar excees de componentes do programa que no so projetados para tratar


essas excees diretamente.

Para processar excees de componentes de software como mtodos, bibliotecas e clases


que provavelmente sero amplamente utilizados e nos quais esses componentes no
podem tratar suas prprias excees.

Em projetos grandes, para tratar excees de uma maneira uniforme em todo o projeto.

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

Pg.

32

11.4. Tipos de excees


Existem classes de excees pr-definidas, entretanto o programador pode criar suas prprias
classes de excees derivadas das classes pr-definidas. Essas excees tratam, dentre outros erros:

Diviso por zero (ArithmeticException);

Objeto no instanciado (NullPointerException);

Atribuio de valor nulo para array (NegativeArraySizeException);

Acesso a subscrito fora do limite de um array (ArrayIndexOutOfBoundsException);

Excees de E/S (IOException).

11.5. Excees definidas pelo usurio


O programador pode criar sua prpria classe de excees, bastanto estender a classe Exception e
utilizar a instruo throws, a qual toma como parmetro um objeto da classe que o programador
criou. No mtodo onde a instruo throws chamada deve haver a declarao do tipo da exceo
atravs da clusula throws, que recebe como parmetro uma lista de tipos de excees que podem
ser tratadas separadas por vrgula ou simplesmente uma exceo. Ver anexo 11 - I.
.

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

Pg.

12 Bibliografia
[1] DEITEL, H. M.; Deitel, P. J. Java, como programar. Editora Bookman, Porto Alegre - 2001

[2] CHAN, Mark C.; Griffith, Steven W.; Iasi, Anthony F. Java, 1001 dicas de programao.
Editora Makron Books, So Paulo 1999.

[3] OLIVEIRA, Mrio Luiz Rodrigues; Oliveira, Erasmo E. de. Java.


III Secicom - Semana de Cincia da Computao da UFLA. Lavras, 2000.

33

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

13 Anexos
Captulo 7
I. Escopo
/ /  ! "#& % 2 !#!   & 
 "#& (  $ ) $ $   ' $  ! ( 
 "#& (  $ ) $      7 6 

& ,  %  9 % $     & 2!  !   - $& & % !


:
- ! 
 ( ! $2$ ( ! $ < $  $
/ / $(  $ ) ! %  !3   $    $
  #  
& ,  %  )  .   ; ?
:
$( ! $ < $  $   !  - !  
 ( ! $ ; ? 
' $  ! (347 ! ' !  $  ! ; ? 
  $  ; $( ! $ < $  $3? 
D
& ,  %  )   3 $( ; ?
:
  # 

/ / $(  $ ) ! % %   $% & $( $2." !   3 $( ; ? 

$( ! $ < $  $ $& & !  ; @ 9


 %   $% ! "  $( ; ? ) $% !#C#
" !
" !

" !

" !

   ; ? 
  A ; ? 
   ; ? 
  A ; ? 

//
" !
/ / " !
/ / " !
//  )

 #

   ; ? ! "  " 3) $(  $ ) ! % %   $% $, " $   $
  A ; ?,  %  $2$3) $(  $ ) ! %  !3   $   $ 
   ; ?( !      $2$3) $(  $ ) ! % %   $% $, " $   $ 
$(  $ ) ! %  !3   $   $9( ! ! "  ! , ) $% ( 

$( ! $ < $  $ $& & !  ; @   9


 %   $% ! "  $( ; ? ) $% !#C#
D

@  C? 

 #

@  C? 

& ,  %  )   ." !    ; ?


:
  #   / / 0     $%  $  3
   3
$ ) ! +, !3" !    ; ?!# ' $" $  
$( ! $ < $  $ $& & !  ; @   9%   $ %  .
" !    ; ? ) $% !#C# # @ $& , 
 !  ( $( ." !    ; ? C? 

#%#) 

$( ! $ < $  $ $& & !  ; @   9


 %   $%  ." !    ; ? ) $% !#C#
" !    ; ? C? 

#

& ,  %  )   ." !    A ; ?


:
$( ! $ < $   $ $& & !  ; @   $(  5 ) ! %  !3   $   $) $% !#C#

@ $& , 
  $ ( 

#

@ $ 2!  ( $( ." !   A ; ? C? 

#

@ $ 3 $ ( ." !   A ; ? C? 

6   
$( ! $ < $  $ $& & !  ; @   $(  5 ) ! %  !3   $   $) $% !#C#

Pg.

34

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

II. Gerando nmeros de Fibonacci recursivamente.


/ / 821   .( !  , (   ) 2 !     $   
 "#& (  $ ) $   *$ $ 0  & , < ( ! $"#

& ,  %  9 % $   !  !     $   


:
& ,  %   $  )  ." $  ; < (   72$( 7  = > ?
:
*$ $ 0  & , < ( ! $"  , "   
   , "#
<   ! "3 ,  & (   % ; @ * 7 !3, "  , " ! ( 
C? 
(
:
D

 , "  0  ! 7 ! (  & $(  ! 0  ;  , "

   ( ! $    ! ; ? ? 

 $  ' ;   ! &  #! ( ( 3?


:
<  ! 3
"  ,  & (   % ; @ ( ( 2 !3% !  , ( $ @? 
D
D

<   ! "3 ,  & (   %  ; @ , " ! ( . $3 ! +, !    $2 !     $   
C#

& ,  %   %  7    $    ;    , " ?


:
/ / '$  . $    
  ; .24
.2.9?
( ! , ( 2;  ? 
/ / $   2 !3( !  , (  $ 
! % !
( ! , ( 2;     $    ; 3B9?#     $    ; 3B .? ? 
D
D

    $    ;  , " ? #

@  C? 

Pg.

35

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

III. Sobrecarga de mtodos.

// 
 "#&
 "#&
& , 
:

 %  $  ." !      ( !  $( ( ! 7 $   


(  $ ) $ $   ' $  ! ( 
(  $ ) $      7  6 
%  9 % $  <  ( !  $( 7 $*! 82!   2!  !   - $& & % !
- ! 
 ( ! $2$( ! $ < $  $

& ,  %  )  .   ; ?


:
$( ! $ < $  $   !  - !  ( ! $;  2? 
' $  ! (347 ! ' !  $ ! ; ? 
  $  ; $( ! $ < $  $3? 
$( ! $ < $  $  !  !  ; @  +, $ ( $  2 .  $31#C# + , $ ( $  *! ; $#?#
@  +, $ ( $  2 2 ,  % !%$ .1#C# +, $ ( $   *! ; $ 2?# @  C? 
D

& ,  %     +, $  ( $  *! ;   


?
:
( ! , ( 2;  6 ? 
D
& ,  %  9  ,  % !#+, $ ( $  *! ;  ,  % ! ?
:
(! , (2
 ;  6 ? 
D

Pg.

36

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

Captulo 8
I. usando arrays.
/ / 0     $%  $2$( ( $ 93& $( $2   !  (  & $( !  ! $3  
 "#& (  $ ) $      7
& ,  %  9 % $   0     $ ( ( $ 
:
& ,  %   $  )  ." $  ; < (   72$( 7  = > ?
:
   $%   $"9( ( $ #  
/ /
!  ! ( !    $.& $( $2$( ( $  !3  
  = > 
< (   73 $  $ 4@ C 

/ / '   7, ( $2 ) $% ( ! 


  2$( ( $  
 ( ;   4 7   % !  7 '  #%# ?
=  > # 6  

 $  $#34@ < ,    (   $% (  C 

 ( ;   4 7   % ! 7 '  #%# ?


 $  $3
#  # @ C#4=  ># @  C 
- !  ( ! $2$( ! $ < $  $   !  - !  ( ! $;  2? 
$( ! $ < $  $  !  !  ;  $  $3? 
- &   $ !   '  82!   $ 7 ! * $%  7;  , % %   $  $  @ 0     $%  $  .& $( $. " ! (  
& $( !  ! $3   C  - &   $ !  0   
83 0   8 < <  ? 
<   ! "3 !   ; ? 

Pg.

37

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

II. Usando arrays multidimensionais.


/ / 0     $%  $  2 !#$( ( $  "#, %   " !     $  
 "#& (  $ ) $ $   ' $  ! ( 
 "#& (  $ ) $      7 6 
& ,  %  9 % $   0     $ ( ( $ !  !   - & & % !
:
- !  ( ! $2$( ! $ < $  $   !  -  !  ( ! $; ? 

/ /   $22$& & % ! 
& ,  %  )  .   ; ?
:
' $  ! (347 ! ' !  $ ! ; ? 
  $  ; $( ! $ < $  $3? 
  $( ( $   = > = > :#:2   D  :  D#D 
  $( ( $  = > = > :#:2  D  :  D  :  D#D 
$( ! $ < $  $  !  !  ; @ $% ( !  2$( ( $   & (%   ' $3   
C ?
 (  $ < $  $; $( ( $  9? 
$( ! $ < $  $  !  !  ; @  $% ( !  2$( ( $  & (%   ' $3   C? 
 (  $ < $  $; $( ( $  .? 
D

& ,  %  )   2 (  $ < $  $;  


:
 ( ;   4 7 $ % !
 ( ;    4 7
:
$( ! $ < $  $ $&
$( ! $ < $  $ $&
D
D

$ => => ?
 7 '  #%# ?
$ =  >  % !  7 '  #%# ?

& !   ; $ =  > = ># @ @? 


& !   ; @  C? 

Captulo 9
I. Hierarquia de cilindro, ponto e crculo com uma interface Forma.

/ / *!      $ 2 $.  ! (  $  !  ( " $


& ,  %     ! (  $  !
:
& ,  %  9$ 
& ,  %  9$ 
& ,  %  9$ 
D

 ( " $

( $   ,  % !#$( ! $; ? 


( $   ,  % ! ) % , " ! ; ? 
( $  < (   7.& ! 7 $ " ! ; ? 
Parte 1 de 5

Pg.

38

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

/ / *!      $ 2 $2 % $   !2  

& ,  %  9 % $  9
  2!  !      !   "#& % !
" !    ( " $
:
& (  !  ! .      / / '  (  !  $  $ 
     
/ / '  ( , (  ! "4$( 7, " !  
& ,  %  #  ; ?
:
$ ,  $  ;  2? 
D
/ / '  ( , (
& ,  %  #  ;   $   #?
:
$ ,  $   ; $ #? 
D
// 
 ,  $2$    (  !  $  $ 
 !    
& ,  %  )  2$ ,  $  ;   $   #?
:
#4$2#  
D
/ / ! 7 $2$2  (  !  $  $ 
& ,  %     & ! 7 $ * ; ? : ( ! , ( 


D

/ / ! 7 $2$2   (  !  $  $3 
& ,  %      ! 7 $ ; ? : ( ! , (    D

/ / ' ) ! ( !#   2! " , " $.( ! & ( !  !  $  $ 2


! < (   7
& ,  %  < (   73  < (   7; ? : ( ! , (  = # #  # 
 # >  D
/ /
! (  $2$2$( ! $
& ,  %  9 ,  % !#$( ! $; ?
:
( ! , ( #  
D

/ /
! (  $23) % , " ! 
& ,  %  9 ,  % ! ) % , " ! ; ?
:
( ! , ( #  
D
/ /
! (  $2. " !# $2 % $   ! 
& ,  %  < (   7.& ! 7 $ " ! ; ?
:
( ! , (    
D
Parte 2 de 5

Pg.

39

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

// 
* !      $ 2 2
$  % $   !'9 (  , % 
/ / ! (  $2 !2  
& ,  %  9 % $   '9 (  , % 2!  !   9  
:
& (  !  ! 2 ,  % !3( $ 
/ / '  ( , (  ! "4$( 7, " !  
& ,  %  .'9 (  , % ; ?
:
/ / '9' $"  $. "#& %    $2$ 2   ( , ( $3 , & ! (  % $   !#$   !  !#$ +,  
$ ,  $
$ ; 2? 
D
/ / '  ( , ( 
& ,  %  .'9 (  , % ;  ,  % !3(   $   #?
:
 , & ! ( ; $ #?  / / '9' $" $22   ( , ( $3 , & ! (  % $   ! 
$ ,  $
$ ; ( ? 
D
// 
 ,  $2.( $ 2 %'9 (  , % 
& ,  %  )  2$ ,  $
$ ;   ,  % !3( ?
:
( $   ; ( 6 4#(
2
 ?
D
/ / ! 7 $2.( $ 2 %'9 (  , % 
& ,  %  9 ,  % !3& ! 7 $
$ ; ?
:
( ! , ( 3( $ 
D
/ / '$%  , % $2$2$( ! $2 %'9 (  , % 
& ,  %  9 ,  % !#$( ! $; ?
:
( ! , ( #82$ '  0 6 ( $  6 ( $  
D

/ / ' ) ! ( !#%'9 (  , % . ,


" $3< (   7 
& ,  %  < (   73  < (   7; ?
:
( ! , (  '!  (   #  , & ! (   < (   7; ?#
D


$  

#4( $ 

/ /
! (  $2. " !# $2 % $   ! 
& ,  %  < (   7.& ! 7 $ " ! ; ?
:
( ! , (  '9 (  , %  
D
Parte 3 de 5

Pg.

40

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

// 
* !    $ 2
  $2 % $   !'9 %   ( 
& ,  %  9 % $   '9 %   ( 2!  !    '9 (  , % 
:
& (  !  ! 2 ,  % !#$% , ( $ / / % , ( $2 %'9 %   ( 

/ / '  ( , (  ! "4$( 7, " !   


& ,  %  .'9 %   ( ; ?
:
/ / '9' $" $  $. "#& %    $2$ 2
    ( , ( $3 , & ! (  % $   !#$   !  !#$ +,  
$ ,  $ % , ( $; 2? 
D
/ / '  ( , (
& ,  %  .'9 %   ( ;  ,  % !3'  ,  % !3(   $   #?
:
 , & ! ( ; ( $ #?  / / '9' $" $22   ( , ( $3 , & ! (  % $   ! 
$ ,  $ % , ( $; ' ? 
D
// 
 ,  $2$% , ( $2 %'9 %   ( 
& ,  %  )  2$ ,  $ % , ( $;  ,  % !3' ?
:
$% , ( $  ; ' 6 4#'2
2? 
D
/ / ! 7 $2$% , ( $2 %'9 %   ( 
& ,  %  9 ,  % !2 ! 7 $ % , ( $; ?
:
( ! , ( #$% , ( $
D
/ / '$%  , % $2$2$( ! $2 %'9 %   (  ; $( ! $2 3
$  , & ! (  ! ? 
& ,  %  9 ,  % !#$( ! $; ?
:
( ! , (  6  , & ! (  $( ! $; ?# 6 82$ '  0 6 ( $  6 $% , ( $
D
/ / '$%  , % $23) % , " !# %'9 %   ( 
& ,  %  9 ,  % ! ) % , " ! ; ?
:
( ! , (   , & ! (  $( ! $; ? 6 $% , ( $
D

/ / ' ) ! ( !#%'9 %   ( . , " $3< (   7 


& ,  %  < (   73  < (   7; ?
:
(! , (
  , & ! (   < (   7; ?#  % , ( $ 
D

$% , ( $

/ /
! (  $2. " !# $2 % $   ! 
& ,  %  < (   7.& ! 7 $ " ! ; ?
:
( ! , (  '9 %   (  
D
Parte 4 de 5

Pg.

41

JAVA, programando rumo ao futuro!

/ / & %   $  $ 3 !  !3& $( $2$.'  ! ( $( +,  $


 "#& (  $ ) $      7 -  &   $ ! 
 "#& (  $ ) $ !   *!   " $%  ( " $ 

Anderson R. Rocha e Alexandre H. V. Soares

   '9 (  , %   '9 %   ( 

& ,  %  9 % $   !  !


:
& ,  %   $  )  ." $  ; < (   72$( 7  = > ?
:
 .&     !   ; $ 9? 
'9 (  , % 2  (  , %    !  '9 (  , % ;      2? 
'9 %   ( 2  %   (    !  '9 %   ( ;        2? 
 ( " $2$( ( $  *!  ( " $  = > 
$( ( $  *!  ( " $    !   ( " $ = 2> 
/ / &  $2$( ( $  *!  ( " $  =  >& $( $., "4 ! 2
  $3 ,   % $   !2  
$( ( $     ( " $  = 2> &  
/ / &  $2$( ( $  *!  ( " $  =  >& $( $., "4 ! 2 $3 ,   % $   !'9 (  , % 
$( ( $  *!  ( " $  =9>4  (  , % 
/ / &  $2$( ( $  *!  ( " $  = >& $( $., "4 ! 2 $3 ,   % $   !'9 %   ( 
$( ( $  *!  ( " $  = .>4  %   ( 
< (   73 $  $  &    & ! 7 $ " ! ; ?#
#4&    < (   7; ?#  #
  (  , %  & ! 7 $ " ! ; ?#
#   (  , %   < (   7; ?#  #
  %   (  & ! 7 $ " ! ; ?#
#   %   (   < (   7; ? 
*!   " $%  ( " $ & ( !    $    !  *!   " $%  ( " $ ;    ? 

/ / ! (  ( ( !#2$( ( $  *!   ( " $ 


 !3 "#& (  " !#. " ! $( ! $  ! ) % , " !# !# $  $2 ! 
 ( ;   4 7 $ ( ( $  * !  ( " $   % !  7 '  #%# ?
 $  $#3

 

$( ( $  *!  ( " $  =


$( ( $  *!  ( " $  =
 ( ! $  #
& ( !    $    ( " $
 % , " !. #
& ( !    $    ( " $

 >  & ! 7 $ " ! ; ?#


 >   < (   7; ?#

; $( ( $  *!  ( " $  =  >  $( ! $; ? ?#


; $( ( $  *!  ( " $  =  >  ) % , " ! ; ? ? 

&   $ !   '  82!   $ 7 ! * $%  7;  , % %   $  $  


* !
"   ( $  .& %  " (    "  
-  &    $ !  0   
3
8  0   8 < <  ? 

<   ! "3 !   ; 2? 

Parte 5 de 5

Pg.

42

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

Captulo 10
I. JCheckBox

 "#&  (  $ ) $  $   6 
 "#&  (  $ ) $  $   ! ) !   6 
 "#&  (  $ ) $      7 6 

& ,  %  9 % $    ! "#& %  - '9' !   A  !  !   -  ( $" !


:
& (  ) $ ! -  !    ! % 3 
& (  ) $ ! - '9' !   A  9 ! 7(    $%   
& ,  %    ! "#& %  - '9' !   A   ; ?
:
 , & ! ( ;  ! "#& % 2 ! - '9' !   A 

?

/ / '9(  $., " ' $   ! ( 


'  $  ! (347 ! ' !  $  ! ; ? 

   ! $  , ;  !   %   $  , ; ? ? 
/ / '9(  $., " -  !    ! % 
  !  -  !    ! % ; ! $22!   % 2 $  3
! "#,  $ (   2? 
  !   ;  !    ;   " ! 
" $      0   .? ? 
  $  ; ? 
/ / '9(  $2 !  - '9' !   A   
 ! 7(     !  - '9' !   A   ; ! 7(   ? 
  $  ;  ! 7(  3? 
 $%      !  - '9' !   A   ; 0 5%    ? 
  $  ;  $%   3? 

'9' !   A   $ % ! (' $ % ! (

 !  '9' !   A   
 $ % ! ( ; ? 
 ! 7(   $   0 ! "   !  ! ( ; ' $ % ! ( ? 
 $%    $   0 ! "   !  ! ( ; ' $ % ! ( ? 
 ! <  ! ; $   2? 
 '  ; ? 

& ,  %   $  )  ." $  ; < (   72$( 7  = > ?


:
'9' !   A    !  $& %  3  !   ! "#& %  - 9' ' !   A   ; ? 

$& %    $          !  ! ( ;
 !        $& ! ( ; ? :
& ,  %  )  3    '9%     7;
:
<   ! "3 !   ; 2? 
D
D
?

     ) !  ! ?

& ( ) $ #
!  % $   '9' !   A   
 $ % ! (  "#& % ! " !   0 ! "
& (  ) $ !3  ) $% ! 7(        0 
& (  ) $ !3  ) $% 0 $%         0 
& ,  %  )  . ! "9< $ ! 9
' ' $ 7 ! ; 0 ! "
:

)!

 ! ?

 !  ! ( :

Pg.

43

JAVA, programando rumo ao futuro!

  ; !  7 ! < , (  !
 ; ! 7 ! < $ !
) $% ! 7(  
! % !
) $% ! 7(  
 ; ! 7 !
 ; ! 7
) $% 0
! % !
) $% 0

; ?2  ! 7(  3?

'9' $ 7 ! ; ?2


    

0

0! "

Anderson R. Rocha e Alexandre H. V. Soares

)!

 <

'

* ?

)!

 <

'

* ?

     0 

<  , (  ! ; ?2  $%   3?


! < $ ! '9' $ 7 ! ; ?2 0 ! "
$%         0   0 '9
$%         0 

  !   ;
 !    ;   " ! 
" $
 ( ! & $   ; ? 

 ) $% ! 7(  #

) $% 0 $%    
  .? ? 

II. JRadioButton

 "#&  (  $ ) $  $   6 
 "#&  (  $ ) $  $   ! ) !   6 
 "#&  (  $ ) $      7 6 
& ,  %  9 % $   
& (  ) $ ! -  ! 
& (  ) $ !  
 

! "#& % 
$  A , #! !   -  ( $" !2:
  ! % 3 
 ! ( " $%   ! ! 7(  
! 0 $%     ! 0 $ %    ! 7(  





& ( ) $
! -
$   A , 3 ( " $%  ! 7(     $%      ! 7(   0 $%   
& ( ) $ 2
! A ,   2( , &2( $   2( , & 
& ,  %    ! "#& % 
$  A ,   ; ?
:
 , & ! ( ;  ! "#& % 2 !
$  A ,  ? 

'

$  ! (347 ! ' !  $  ! ; ? 


   ! $  , ;  !   %   $  , ; ? ? 
  !  - !
  $   ; ? 



  ! % ; ! $22!   % 2 $  !3"#,  $( 2? 

/ / '9(  $3-
$  A ,  
 ( " $%  !  -
$  A
  $  ;  ( " $% ? 
 ! 7(     !  -
$  A
  $  ;  ! 7(  3? 
 $%      !  -
$  A ,
  $  ;  $%   3? 
 ! 7(   0 $%      !  -

  $  ;  ! 7(   0 $%   3? 

,  ; ( " $%


,  ; ! 7(  
 ; 0 $%   

( , ! ? 

  $%  ! ? 

  $%  ! ? 

$  A ,  ; ! 7(   / 0 $ %   

/ /
! 7  ( $2! ) !    

$  A ,  $ % ! (' $


 ( " $%  $   0 ! "   !  ! ( ;
 ! 7(   $   0 ! "   !  ! ( ;
 $%    $   0 ! "   !  ! ( ; '

% ! (
' $ % !
' $ % !
$ % ! (

  $%  ! ? 

 ! 
$  A ,  $ % ! ( ; ? 
( ?
( ?
?

Pg.

44

JAVA, programando rumo ao futuro!

 ! 7(   0 $%    $   0 ! "


//
($
($
($
($
($

'9(  $.( ! % $  $
  2( , & 
  2( , & $
  2( , & $
  2( , & $
  2( , & $

.% 
 !
 ;
 ;
 ;
 ;

Anderson R. Rocha e Alexandre H. V. Soares

  !  ! ( ; ' $ % ! ( ? 

7  $2! "4 - ( $  A ,   


 A ,  2( , &; ? 
 ( " $% ? 
 ! 7(  3? 
 $%   3? 
 ! 7(   0 $%   3? 

 

! ( " $%  !    ;   " ! 


" $      0   .? 
! ! 7(     !    ;   " ! 
" $     A  *  .? 
  0 $%      !    ;   " ! 
" $     0   0 ') .? 
 ! 7(     0 $%    
 !    ;   " ! 
" $     A  * #    0   0 ') .? 
  !   ;   ! ( " $% ? 

 

 ! <  ! ;   2? 


 '  ; ? 

& ,  %   $  )  ." $  ; < (   2


7 $( 7  = > ?
:

$  A , 
   !  $& %  3  !   ! "#& % 
$  A ,  ; ? 

$& %    $          !  ! ( ;
 !        $& ! ( ; ? :
& ,  %  )  3    '9%     7;
:
<   ! "3 !   ; 2? 
D
D
?

     ) !  ! ?

& ( ) $ #
!  % $  
$  A ,  $ % ! ( "#& % ! " !   0 ! "
:
& ,  %  )  . ! "9< $ ! '9' $ 7 ! ; 0 ! " ) !  ! ?
:
  ; !  7 ! < , (  ! ; ?2  ( " $% ?
  !   ;   ! ( " $% ? 
! %  !3  ; !  7 ! < , (  ! ; ?2  ! 7(  3?
  !   ;   ! ! 7(  3? 
! %  !3  ; !  7 ! < , (  ! ; ?2  $%   3?
  !   ;   0 $%   3? 
! %  !3  ; !  7 ! < , (  ! ; ?2  ! 7(   0 $%   3?
  !   ;  ! 7(     0 $%   3? 
 ( ! & $  ; ? 
D
D

 !  ! (

Pg.

45

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

III. Multiple Selection List

 "#&  (  $ ) $      7  6 
 "#&  (  $ ) $  $   6 
 "#&  (  $ ) $  $   ! ) !   6 
& ,  %  9 % $    ! "#& %  8., %  & % ! < ! % !      !  !   -  ( $" !2:
& (  ) $ ! -   %   $*! '( !  %   $*! '&  $
& (  ) $ ! - A , # &  $
& (  ) $ ! < (   7. " !  *$  '( !  = >
: ( !    , %  '9 $   '9  $2!   , (   '9  $ 
! (  !  '9  $2 % $(   82$ 7 !  $  $( $ $ 
  $ 
! ( " ! % '   A ( $    " $( ! %  D 
& ,  %    ! "#& %  8., %  & % ! < ! % !      ; ?
:
 , & ! ( ;  ! "#& % 2 3
! % $ 
  !  ! % !  ." %  & % $ ? 

'

$  ! (347 ! ' !  $  ! ; ? 


   ! $  , ;  !   %   $  , ; ? ? 

$*! '( !    !  -   ;  " !  *$  '( ! ? 


$*! '( !    !     % !
 ',  ; 2? 
$*! '( !    !    !  '! % % !  7' ; 2? 
$*! '( !    ! < ! % !    82  ! ;
  < ! % !    82  ! %  8   0  0 
  < ' 0   ? 
 $  ;  !  - <  ( % % $ ! ; %   $*! '( ! ? ? 
/ '9(  $2.  $ 2 !# &  $
&  $   !  - A ,  ; '&  $ 6%6%6 ? 
&  $ $         !  ! ( ;
 !        !  ! ( ; ? :
& ,  %  )  2$    ! (  ( " ! ;     ) !  ! ?
:
/ / '%   $2 ) $% ( !  ! % !    $   ! " %   $*! '&  $
%   $*! '&  $  !   *$ $;
%   $*! '( !   7 ! < ! % !  !  $% , !  ; ? ? 
D
D

%
%
%
%

/



?
  $  ;  &  $3? 
$*! '&
$*! '&
$*! '&
$*! '&
$*! '&
 < ! %! 
  $  ;  ! 
%
%
%
%
%

$   !  -  ; ? 
 $  !     % !
 ',  ; 2? 
 $  !    !  '! % %   ' ; 2? 
 $  !    !  '! % % !  7' ; 2? 
 $  ! < ! % !    82  ! ;
 0 
  <
  82  ! %  < 0 
- <  ( % % $ ! ; %   $*! '&  $3? ? 

' 0 

 ?

 ! <  ! ;   2? 


 '  ; ? 

& ,  %   $  )  ." $  ; < (   2


7 $( 7  = > ?
:
8., %  & % ! < ! % !   #$& %  3  !   ! "#& %  8., %  & % ! < ! % !      ; ? 
$& %    $          !  ! ( ;
 !        $& ! ( ; ? :

Pg.

46

JAVA, programando rumo ao futuro!

?

& ,  %  )  3    '9%     7;


:
<   ! "3 !   ; 2? 
D

Anderson R. Rocha e Alexandre H. V. Soares

     ) !  ! ?

IV. JPanel
 "#& (  $ ) $ $   6 
 "#& (  $ ) $ $   ! ) !   6 
 "#& (  $ ) $      7 6 

& ,  %  9 % $    ! "#& %  - $ ! % !  !   -  ( $" !2:


& (  ) $ ! - $  ! % & $  ! % *! A   !  
& (  ) $ ! - A , 3   !  = > 
& ,  %    ! "#& %  - $ ! % ; ?
:
 , & ! ( ;  ! "#& % 2 ! - $ ! % ? 

'

$  ! ( 347 ! ' !  $ ! ; ? 


& $  ! % *! A   !    !  - $ ! % ; ? 
   !    !  - A ,  = 2> 
& $  ! % *! A   !    ! $  , ;
 !  2(   $   , ;    !   % !  7 ' ? ? 

 (
D

;   4 7    !   % !  7 '  #%# ? :


   !  =  >  !  - A ,  ; A   # ; #  ? ? 
& $  ! % *! A   !   $   ;    !  =  > ? 

  $  ; & $  ! % *! A   !   A (  ! ( $  ,  <


 ! <  ! ;    2? 
 '  ; ? 

  ? 

& ,  %   $  )  ." $  ; < (   72$( 7  = > ?


:
$ ! % *!
" 2$& %  3  !   ! "#& %  - $ ! % ; ? 

$& %    $          !  ! ( ;
 !        $& ! ( ; ? :
& ,  %  )  3    '9%     7;
:
<   ! "3 !   ; 2? 
D
D
?

     ) !  ! ?

Pg.

47

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

V. Tratamento de Eventos

 "#&  (  $ ) $      7  6 
 "#&  (  $ ) $  $   ! ) !   6 
 "#&  (  $ ) $  $   6 
& ,  %  9 % $  9   (!  !   -  ( $" !2:
& (  ) $ !3  ) $ % ( *! *  B    ) $% ( *!

 B  

& ,  %  #    ( ; ?
:
 , & ! ( ; "   "#& % ! & (  7( $" $2 !# !  !  '  ? 
7 ! ' !  $ ! ; ?  $  ;
 !  $ ! % ; '9%  +, #
! !#$( ( $  !#." ,  !3& $( $2 !  !  ' $( ? 
A (  ! ( $  ,  <     ? 
$   82,  ! 82     !  ! ( ;
 !  82,  ! 82     $& ! ( ; ? :
& ,  %  )  ." ,  ! *( $ 7 7 ! ; 82,  ! ) !  ! ?
:
) $% ( *! * 4!  7 ! * ; ? 
) $% ( *! 4!  7 ! ; ? 
+
( ! & $  ; ? + 
D
D
?

 ! <  ! ;    2? 


 '  ; ? 

& ,  %  )  .& $   ; 2( $& '   73?


:
7   % % .) $% ; ) $ % ( *! *  ) $ % ( *!
D

+   .? 

& ,  %   $  )  ." $  ; < (   72$( 7  = > ?


:
  ($& %  3  !    ( ; ? 

$& %    $          !  ! ( ;
 !        $& ! ( ; ? :
& ,  %  )  3    '9%     7;
:
<   ! "3 !   ; 2? 
D
D
?

     ) !  ! ?

Pg.

48

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

Captulo 11:
I. Tratamento de excees padres

& ,  %  9 % $     !  $ 
:
& ,  %   $  )  ." $  ; < (   72$( 7  = > ?
:
 ( ;     6 4 B  .?
:
(
:
 %  $ # /  
<   ! "3 ,  & (   %  ; @
!  , % $  2
  
! . )    .
 & (C#4# @!
C# ? 
D
 $  '2; (  ' " !     ! &  #! ?
:
<   ! "3 ,  & (   %  ; * )   $ .& ( ! ( . 3 , & ( $  $ ? 
D
D
D
D

II. Tratamento de excees criadas pelo usurio

& ,  %  9 % $    $  , '! , % $ !  !   


:
  $ , '! , % $  ; ?
:
 , & ! ( ; @   $ ,# !  , % $  
C ?
D

& ( ! 
:
< 
//
//
//
D

!

&  

! 3)  . "#& (  " ! ( ( ; ? 


 ! "3 ,  & (   %  ; 7 ! 82!   $ 7 ! ; ? ? 
7 ! 82!   $ 7 ! ; ?!3, " " !   2 $2 % $   !  ' (  $ % !#+, #
!  ! ) % ) !#$." !   $ 7 ! "4 !
! ( ( 2 $2!   !  $ 
  % $   !  ' (  $ % !#!3, " $3 , & ! (  % $   !# 2
$  % $   !   ! &   

 % $   '$  $ % ! (    
:
& (  ) $ !3   ! , % $  

'$  $ % !
:
D

(    ;   ?

 ! , % $  4 

& ,  %   $  )  ." $  ; < (   72$( 7  = > ?


:
(
:
'$  $ % ! (    2 $   $   !  ' $  $ % ! (    ; 2? 
'  % ! ;  $  $  ! , % $  6 2
 ?
 $  $ ( !  ( $ '! , % $  ; 9? 

Pg.

49

JAVA, programando rumo ao futuro!

Pg.

50

' (    !    $ , 


' ! , % $  ; ? 

$  2
' ;   $  , '! , % $ ! ?
:
!   "#& (  " ! ( ( ; ? 
D
D

Anderson R. Rocha e Alexandre H. V. Soares

& ( ) $
! )  .( !  ( $ '!  , % $  ;    ! 3?
:
 ! , % $    ! , % $ (3 ! 
D

13.2. Palavras reservadas de Java

$  ( $ 
  % ! $
 ( ! $ 
  !
$ !
$  '
 ' $(
 %$  
    , !


 
 ,  % !
! % !
!  !   
 $%  !
   $%
   $% % 
 % $
 (
& $ $ 7 !

 "#& % ! " !  
 "#& (
   $  !  

 ! ($  !
%  7
 $ ) !
 !
 , %%
' 

& ( ) $ !
& ( !  ! 
& ,  %
(! , (
 ' (
 $ 
, & ! (
   '
    ' (   ! 
' ( 

' (  
( $   ! 
(, !
(
)  
) % $  % !
'  % !
 !  $, %

13.3. Wrappers
Cada tipo primitivo da linguagem Java, exceto short e byte, possui uma classe correspondente
declarada no pacote java.lang. Essas classes que empacotam esses tipos primitivos e alguns
mtodos e constantes so denominados wrappers. Assim temos as seguintes classes wrappers:
Integer, Boolean, Long, Double, Float e Character.

13.4. Convenes de Java


Na linguagem Java um identificador deve ser iniciado com uma letra, sublinhado ( _ ), ou sinal de
cifro $ e existe uma diferenciao entre letras maisculas e minsculas. Os identificadores poder
ter qualquer comprimento.

Exemplos de identificadores vlidos:

identificador

nome

Nome // este identificador diferente do identificador acima

_variavel1

$mudanca21

JAVA, programando rumo ao futuro!

Anderson R. Rocha e Alexandre H. V. Soares

Esta apostila pode ser copiada e distribuda livremente desde


que, mantidos os nomes dos desenvolvedores e este aviso.
Qualquer modificao deve ser informada aos autores.
Java, Programando rumo ao futuro!
Copyleft by Anderson de Rezende Rocha & Alexandre Henrique Vieira Soares
Lavras, maio de 2003.

Pg.

51

Das könnte Ihnen auch gefallen