Apostila Java
Apostila Java
www.t2ti.com
1
Curso Java Starter
Apresentao
O Curso Java Starter foi projetado com o objetivo de ajudar quelas pessoas
que tm uma base de lgica de programao e desejam entrar no mercado de
trabalho sabendo Java,
Nosso objetivo que aps o estudo do Curso Java Starter o aluno no tenha
dificuldades para acompanhar um curso avanado onde poder aprender a
desenvolver aplicativos para Web, utilizando tecnologias como Servlets e JSP e
frameworks como Struts e JSF, alm do desenvolvimento para dispositivos mveis.
Albert Eije trabalha com informtica desde 1993. Durante esse perodo j
trabalhou com vrias linguagens de programao: Clipper, PHP, Delphi, C, Java, etc.
Atualmente mantm o site www.alberteije.com.
O curso Java Starter surgiu da idia dos trs amigos que trabalham juntos em
uma instituio financeira de grande porte.
www.t2ti.com
2
Curso Java Starter
Mdulo
01
Introduo ao
Java
Histrico
www.t2ti.com
3
Curso Java Starter
etc.
A mquina virtual java (JVM) uma mquina imaginria que emula uma
aplicao em uma mquina real. a JVM que permite a portabilidade do cdigo Java,
isto ocorre porque todo cdigo Java compilada para um formato intermedirio,
bytecode, este formato ento interpretado pela JVM.
Existem diversas JVMs cada uma delas destinada a um tipo de sistema
operacional (Windows, Linux, Mac e etc.), desta forma sendo o cdigo da aplicao
Java, bytecode, um cdigo interpretado pela JVM, podemos desenvolver uma
aplicao sem nos preocuparmos onde ela ser executada pois sabemos que existindo
a JVM instalada nosso cdigo ser executvel.
www.t2ti.com
4
Curso Java Starter
Hotspot
www.t2ti.com
5
Curso Java Starter
JRE e JDK
Verses do Java:
www.t2ti.com
6
Curso Java Starter
5. J2SE 1.4 (2002) Merlin: Palavra reservada assert, biblioteca NIO e etc.;
6. J2SE 5.0 (2004) Tiger: Apesar da verso ser 1.5, agora chamada apenas
de 5. Adies importantes como: Enumerao, Autoboxing, Generics, for-each e
etc;
7. JSE 6 (2006) Mustang: Entre outras alteraes houveram mudana na
nomenclatura (remoo do 2 J2SE) e melhora significativa na performance.
Ferramentas do JDK
A seguir temos uma breve descrio das principais ferramentas que fazem
parte do JDK:
www.t2ti.com
7
Curso Java Starter
Exemplos:
www.t2ti.com
8
Curso Java Starter
Exemplos:
Exemplos:
Instalao do JDK
www.t2ti.com
9
Curso Java Starter
Windows
www.t2ti.com
10
Curso Java Starter
www.t2ti.com
11
Curso Java Starter
www.t2ti.com
12
Curso Java Starter
www.t2ti.com
13
Curso Java Starter
www.t2ti.com
14
Curso Java Starter
www.t2ti.com
15
Curso Java Starter
www.t2ti.com
16
Curso Java Starter
Linha:
1. Declarao da classe pblica de nome Teste;
2. Incio do corpo da classe;
3. Declarao do mtodo main (pblico, esttico, sem retorno e parametrizado);
www.t2ti.com
17
Curso Java Starter
Mtodo main
/*
Este o comentrio
de mais de
uma linha
*/
www.t2ti.com
18
Curso Java Starter
Exerccios
www.t2ti.com
19
Curso Java Starter
Mdulo
02
Tipos Primitivos, Operadores
e Controle de Fluxo
Introduo
Se voc est achando essa parte do curso muito terica, no se preocupe com
isso. Voc vai usar quase tudo que est sendo visto aqui quando for criar uma
aplicao Java, seja ela desktop, para web ou mobile.
Assista aos mini-cursos NetBeans e Eclipe para observar como instalar e
utilizar essas IDEs. Voc pode escolher qualquer umas das duas para desenvolver os
seus projetos Java.
Tipos de Dados
Tipo Descrio
Pode ser contido em 1 bit, porm o seu tamanho no precisamente
boolean
definido. Assume os valores true ou false.
Caractere em notao Unicode de 16 bits. Serve para armazenar dados
char alfanumricos. Tambm pode ser usado como um dado inteiro com valores
na faixa entre 0 e 65535.
Inteiro de 8 bits em notao de complemento de dois. Pode assumir valores
byte
entre -27=-128 e 27-1=127.
short Inteiro de 16 bits em notao de complemento de dois. Os valores possveis
www.t2ti.com
3
Curso Java Starter
/*
Declaramos 8 variveis. Exatamente o mesmo nmero
dos tipos primitivos do Java. Cada varivel de
um dos tipos.
*/
boolean bo;
char c;
byte b;
short s;
int i;
long l;
float f;
double d;
/*
Atribumos o valor 65 varivel c, que do tipo
char.
/*
www.t2ti.com
4
Curso Java Starter
/*
Sada da impresso:
=============================
char
=============================
valor de c como char = A
valor de c como numero = 65
-----------------------------
/*
Agora vamos trabalhar com os outros tipos inteiros:
byte, short e int.
b = 10;
s = b;
i = s;
System.out.println("=============================");
System.out.println("inteiros");
System.out.println("=============================");
System.out.println("i = s = b = "+i);
/*
Sada da impresso:
=============================
inteiros
=============================
i = s = b = 10
*/
/*
Agora multiplicamos i por 100 e atribuimos o total
dessa multiplicao ao prprio i.
*/
i *= 100;
www.t2ti.com
5
Curso Java Starter
/*
Sada da impresso:
/*
Olhe para a linha de cdigo abaixo com muita
ateno. Eu tento colocar o valor de i em b, mas o
Java no deixa. Preciso ento fazer um casting
(converso) explcito. Antes da varivel i eu insiro
entre parnteses o tipo de dado para o qual eu
quero convert-la. Lembre-se que acima eu converti
de byte para short e de short para int e isso no
foi necessrio. No entanto, essa converso acima
tambm foi um casting, s que foi um casting implcito.
b = (byte)i;
/*
Sada da impresso:
/*
O que ocorre que no lugar de o Java lanar uma exceo
ou converter para zero ele retira a parte binria do int
e deixa apenas a do byte e apresenta o que restou.
Portanto, saiba que o Java vai deixar voc fazer esse tipo
de converso porque ele acha que voc, programador, sabe
que poder perder bits nessa converso!
*/
www.t2ti.com
6
Curso Java Starter
/*
Abaixo simplesmente inserimos o valor do int em um long
que o dobro de um int. Ou seja, sem problemas!
*/
l = i;
System.out.println("valor de l = "+l);
System.out.println("-----------------------------");
/*
Sada da impresso:
valor de l = 1000
-----------------------------
*/
/*
Chegamos aos nmeros com ponto flutuante (casas decimais).
*/
System.out.println("=============================");
System.out.println("ponto flutuante");
System.out.println("=============================");
d = 125.32;
System.out.println("valor de d = " + d);
d = 125.32d;
System.out.println("valor de d = " + d);
d = 125.32f;
System.out.println("valor de d = " + d);
/*
no primeiro caso atribuimos 125.32 variavel d.
sem problemas. funciona legal, como podemos ver
na Sada da impresso.
Sada da impresso:
=============================
ponto flutuante
www.t2ti.com
7
Curso Java Starter
=============================
valor de d = 125.32
valor de d = 125.32
valor de d = 125.31999969482422
*/
f = (float)125.32;
System.out.println("valor de f = " + d);
f = 125.32f;
System.out.println("valor de f = " + d);
f = (float)125.32d;
System.out.println("valor de f = " + d);
System.out.println("-----------------------------");
/*
Mesma coisa que foi feita com o Double, mas dessa
vez com o float.
Sada da impresso:
valor de f = 125.31999969482422
valor de f = 125.31999969482422
valor de f = 125.31999969482422
-----------------------------
*/
/*
Abordaremos agora o tipo booleano.
*/
System.out.println("=============================");
System.out.println("booleano");
System.out.println("=============================");
bo = true;
System.out.println("valor de bo = " + bo);
bo = (1 > 2);
System.out.println("valor de bo = " + bo);
bo = (f == d);
System.out.println("valor de bo = " + bo);
System.out.println("-----------------------------");
/*
www.t2ti.com
8
Curso Java Starter
Sada da impresso:
=============================
booleano
=============================
valor de bo = true
valor de bo = false
valor de bo = true
-----------------------------
*/
System.out.println("=============================");
System.out.println("brincando com os tipos");
System.out.println("=============================");
System.out.println("--");
/*
Em nossa primeira "brincadeira" com os tipos tentamos
converter de int para float. Observe atentamente o
resultado na sada de impresso.
Sada de impresso:
=============================
brincando com os tipos
=============================
posso converter int para float?
i antes da conversao = 1000
f antes da conversao = 125.32
i depois da conversao = 1000
f depois da conversao = 1000.0
--
*/
f = (float)d;
www.t2ti.com
9
Curso Java Starter
/*
Depois de nossa primeira "brincadeira" o valor de
f ficou igual ao valor de i. Por isso atribumos o
valor de d novamente varivel f.
Sada de impresso:
www.t2ti.com
10
Curso Java Starter
Operadores
www.t2ti.com
11
Curso Java Starter
operadores.
Comente seus resultados e observaes na lista de discusso. Alm disso, se
surgirem dvidas, envie-as para a lista.
www.t2ti.com
12
Curso Java Starter
2 + 6 * 5 = 32
(2 + 6) * 5 = 40
Controle de Fluxo
www.t2ti.com
13
Curso Java Starter
if-else
Sintaxe:
if (expresso booleana) if (expresso booleana) {
instruo_simples; instrues
} else if (expresso booleana) {
if (expresso booleana) { instrues
instrues } else {
} instrues
}
if ( ano < 0) {
System.out.println("No um ano!");
} else if ( (ano%4==0 && ano%100!=0) || (ano%400==0) ) {
System.out.println(" bissexto!");
} else {
System.out.println("No bissexto!");
}
while e do-while
Sintaxe:
while (expreso booleana) do
{ {
instrues; instrues;
} } while (expreso booleana );
www.t2ti.com
14
Curso Java Starter
for
Sintaxe:
for ( inicializao; for ( inicializao;
expresses booleanas; expresses booleanas;
passo da repetio ) passo da repetio )
instruo_simples; {
instrues;
}
O for pode conter apenas uma instruo no seu corpo. Neste caso no
necessrio abrir um bloco. Isso assim porque o for j implementa alguns comandos
na sua assinatura, ou seja, no seu cabealho, como a inicializao da varivel e o
passo da repetio, ou seja, o incremento/decremento da varivel.
Veja os exemplos:
www.t2ti.com
15
Curso Java Starter
break e continue
Voc deve ter observado que quando fizemos os laos infinitos com o while e
com o for utilizamos um comando break. Para que ele serve? Este comando serve
para quebrar o lao, ou seja, ele far com que o lao seja interrompido.
O comando continue tambm influi dentro de um lao. Mas ele no vai quebrar
o lao. Ele interrompe aquela iterao do lao e reinicia o bloco com a prxima
iterao.
www.t2ti.com
16
Curso Java Starter
switch (case)
Sintaxe:
switch(seletor_inteiro) { switch(letra) {
case valor_inteiro_1 : case 'A' :
instrues; System.out.println("A");
break; break;
case valor_inteiro_2 : case 'B' :
instrues; System.out.println("B");
break; break;
... ...
default: default:
instrues; System.out.println("?");
} }
Palavras Reservadas
www.t2ti.com
17
Curso Java Starter
Tente utilizar algumas dessas palavras como nome de variveis e veja como o
compilador Java se comporta.
Voc deve ter percebido que no utilizamos um tipo String neste mdulo. O
Java possui um tipo String, no entanto, String no Java no um tipo primitivo.
Falaremos sobre String em um mdulo posterior.
Entrada de Dados
Com o estudo do programa acima j d para voc solicitar que o usurio digite
alguma coisa e utilizar o que o mesmo est digitando.
www.t2ti.com
18
Curso Java Starter
Exerccios
Aprenda com quem tambm est aprendendo, veja e compartilhe as suas respostas
no nosso Frum:
www.t2ti.com
19
Curso Java Starter
www.t2ti.com
20
Curso Java Starter
* ******** ******** *
** ******* ******* **
*** ****** ****** ***
**** ***** ***** ****
***** **** **** *****
****** *** *** ******
******* ** ** *******
******** * * ********
www.t2ti.com
21
Curso Java Starter
Mdulo
03
Arrays e
entrada de dados
Introduo
www.t2ti.com
3
Curso Java Starter
Eficincia de busca;
Eficincia de insero;
Organizao;
Ordenao;
Forma de acesso;
Forma de busca e;
Forma de insero.
Arrays unidimensionais:
www.t2ti.com
4
Curso Java Starter
www.t2ti.com
5
Curso Java Starter
Exerccio Resolvido
www.t2ti.com
6
Curso Java Starter
Exerccio Resolvido
www.t2ti.com
7
Curso Java Starter
Arrays Multi-dimensionais
Exerccio Resolvido
www.t2ti.com
8
Curso Java Starter
Resoluo:
1. A matriz ser de double;
Sada console:
www.t2ti.com
9
Curso Java Starter
import java.util.Arrays;
www.t2ti.com
10
Curso Java Starter
}
//inicio do algoritmo de ordenacao - implementado
boolean estaOrdenado = false;
//armazena o tempo de inicio da ordenacao
long inicio = System.currentTimeMillis();
while(!estaOrdenado)
{
estaOrdenado = true;
for(int i = 1; i < arrayInteiros.length; i++)
{
if(arrayInteiros[i-1] > arrayInteiros[i])
{
estaOrdenado = false;
int aux = arrayInteiros[i];
arrayInteiros[i] = arrayInteiros[i-1];
arrayInteiros[i-1] = aux;
}
}
}
//armazena o tempo fim da ordenacao
long fim = System.currentTimeMillis();
//Imprime o tempo total de ordenacao
System.out.println("Tempo ordenar 1: "+(fim-inicio)+" ms");
//Atribuindo os valores a cada posicao
for(int i = 10000; i > 0; i--)
{
arrayInteiros[arrayInteiros.length - i] = i;
}
//armazena o tempo de inicio da ordenacao
inicio = System.currentTimeMillis();
//Ordena utilizando a classe Arrays
Arrays.sort(arrayInteiros);
//armazena o tempo fim da ordenacao
fim = System.currentTimeMillis();
//Imprime o tempo total de ordenacao
System.out.println("Tempo ordenar 2: "+(fim-inicio)+" ms");
}
Resultado da execuo:
Tempo ordenar 1: 1013 ms
Tempo ordenar 2: 9 ms
import java.util.Arrays;
public class PesquisarArray {
public static void main(String[] args) {
//Criacao do array de 1.000.000 de posicoes
int[] numerosInteiros = new int[1000000];
www.t2ti.com
11
Curso Java Starter
Pesquisa 1: 94 ms
Pesquisa 2: 1 ms
Como era esperado, a pesquisa utilizando a classe Arrays foi muito mais
eficiente que a pesquisa percorrendo todos os elementos.
www.t2ti.com
12
Curso Java Starter
Exerccio Resolvido
www.t2ti.com
13
Curso Java Starter
www.t2ti.com
14
Curso Java Starter
Mtodo Descrio
showConfirmDialog Utilizado para confirmaes, dilogos cuja resposta seja do tipo
sim, no ou cancela.
showInputDialog Utilizado para entrada de dados pelo usurio.
showMessageDialog Informa ao usurio alguma coisa
showOptionDialog Uma mistura dos trs outros mtodos, ou seja, pode ser
utilizado para informar, para entrada de dados e ainda
confirmaes.
www.t2ti.com
15
Curso Java Starter
www.t2ti.com
16
Curso Java Starter
Exerccios
www.t2ti.com
17
Curso Java Starter
do primeiro.
11)Utilizando a classe Scanner faa um programa que solicite a entrada de 10
nmeros inteiros, verifique a freqncia de ocorrncia de cada nmero no vetor.
12)Crie um programa que receba como parmetro de entrada 16 valores, coloque
os em uma matriz 4x4 e faa a transposio dos valores.
13)Desenvolva um programa que receba 10 parmetros por linha de comando,
inverta todas as posies e imprima o resultado.
14)Desenvolva um programa, utilizando a classe Scanner, que obtenha 10 valores
de entrada e verifique se eles formam uma progresso aritmtica.
15)Desenvolva um programa, utilizando a classe Scanner, que obtenha 10 valores
de entrada e identifique o maior valor, o menor e a diferena entre os valores.
16)Faa um algoritmo para ordenar um vetor da seguinte forma, o algoritmo
identifica o maior valor e o coloca na ltima posio livre de um outro vetor. Na
prxima iterao este valor descartado, repetindo at no sobrarem mais
valores.
www.t2ti.com
18
Curso Java Starter
Mdulo
Orientao a Objetos
04 Classes, Objetos e
Encapsulamento
Introduo
www.t2ti.com
3
Curso Java Starter
Modularidade: Uma vez criado um objeto pode ser passado por todo o
sistema;
Encapsulamento: Detalhes de implementao ficam ocultos
externamente ao objeto;
Reuso: Uma vez criado um objeto pode ser utilizado em outros
programas;
Manutenibilidade: Manuteno realizada em pontos especficos do
seu programa (objetos).
Classes e Objetos
www.t2ti.com
4
Curso Java Starter
Mundo - no meu trabalho utilizamos esta expresso para identificar sistemas cujo
escopo no est bem definido (limitado) que so interminveis.
Objetos so oriundos (instncias) das classes. Uma classe uma
especificao para um determinado tipo de objeto, isto , para que o objeto seja de
determinada classe ele, obrigatoriamente, ter que respeitar a especificao. Por
exemplo, vamos especificar que todo documento deve possuir, ao menos, foto, cdigo,
nome e data de nascimento.
Agora vamos criar um documento para o Alfredo e um para a Juliana:
class Documento {
//Estado
String foto; //Nome do arquivo de imagem
String nome; //Nome da pessoa
Integer codigo; //Codigo deste documento
String dataNascimento; //Data de nascimento
class Programa {
public static void main(String[] args) {
www.t2ti.com
5
Curso Java Starter
Objetos na memria
class Programa {
public static void main(String[] args) { 253 Documento
Documento doc1 = new Documento(); nome = Alfredo
doc1.nome = "Alfredo";
System.out.println("doc1: "+doc1.nome);
System.out.println("doc2: "+doc2.nome); 255
}
}
256
O resultado da execuo deste programa imprime:
257
doc1: Alfredo
doc2: Juliana
258
Na memria o que acontece o seguinte:
259
doc1 = 253
260 Documento
nome = Juliana
doc2 = 260
261
www.t2ti.com
6
Curso Java Starter
class Programa {
public static void main(String[] args) {
Documento doc1 = new Documento();
doc1.nome = "Alfredo";
System.out.println("doc1: "+doc1.nome);
System.out.println("doc2: "+doc2.nome);
253 Documento
} nome = Juliana
}
254
258
Desta vez o que aconteceu na memria foi o
seguinte: 259
doc1 = 253
260
doc2 = 253
261
www.t2ti.com
7
Curso Java Starter
(endereo) o mesmo, logo o objeto que estas variveis fazem referncia tambm
ser o mesmo.
Mtodos
class CarroCorrida {
//Estado
Integer numeroIdentificacao;
Double velocidadeAtual;
Double velocidadeMaxima;
//Comportamento...
}
Pronto! Agora temos o nosso carro de corrida que no faz nada por
enqanto. Vamos adicionar os primeiros comportamentos, ligar e desligar. Estas aes
(ligar e desligar) no retornam nenhum tipo de informao, o carro apenas emite um
som, sendo assim, estes comportamentos podem ser implementados da seguinte
forma:
void ligar()
{
System.out.println("VRUUUMmmmmmmmmm");
}
void desligar()
{
System.out.println("MMMmmmm......");
}
Observe que os dois mtodos no retornam nenhuma informao para
quem os aciona (invoca) isto informado atravs da palavra reservada void.
www.t2ti.com
8
Curso Java Starter
void acelerar()
{
velocidadeAtual += 10;
if(velocidadeAtual > velocidadeMaxima)
{
velocidadeAtual = velocidadeMaxima;
}
}
velocidadeAtual -= intensidadeFreada*0.25;
if(velocidadeAtual < 0)
{
velocidadeAtual = 0.0;
}
}
class CarroCorrida {
//Estado
Integer numeroIdentificacao;
Double velocidadeAtual;
Double velocidadeMaxima;
//Comportamento...
void ligar()
www.t2ti.com
9
Curso Java Starter
{
System.out.println("VRUUUMmmmmmmmmm");
}
void desligar()
{
System.out.println("MMMmmmm......");
}
void acelerar()
{
velocidadeAtual += 10;
if(velocidadeAtual > velocidadeMaxima)
{
velocidadeAtual = velocidadeMaxima;
}
}
velocidadeAtual -= intensidadeFreada*0.25;
if(velocidadeAtual < 0)
{
velocidadeAtual = 0.0;
}
}
}
//Estado
Integer numeroIdentificacao;
Double velocidadeAtual = 0.0;
Double velocidadeMaxima = 100.0;
//...
Desta forma toda vez que um carro for instanciado o valor destas variveis
estar previamente atribudo.
Mas, observando novamente o nosso modelo de carro de corrida
percebemos que faltam algumas caractersticas importantes. No nosso caso o piloto
com seus atributos so fundamentais para uma corrida de automveis.
Isto fcil de resolver, primeiro identificamos os atributos que desejamos e
www.t2ti.com
10
Curso Java Starter
class CarroCorrida {
//Estado
Integer numeroIdentificacao;
Double velocidadeAtual = 0.0;
Double velocidadeMaxima = 100.0;
String nomePiloto;
Integer idadePiloto;
Integer habilidadePiloto;
//...
class Piloto {
String nome;
Integer habilidade;
Integer idade;
class CarroCorrida {
//Estado
Integer numeroIdentificacao;
Double velocidadeAtual = 0.0;
Double velocidadeMaxima = 100.0;
Piloto piloto;
//...
void acelerar()
{
velocidadeAtual += 10 + piloto.habilidade*0.1;
if(velocidadeAtual > velocidadeMaxima)
{
velocidadeAtual = velocidadeMaxima;
}
}
www.t2ti.com
11
Curso Java Starter
class Corrida {
//Inicia a corrida
carroEquipeVelocidade.acelerar();
carroEquipeTrapaceiros.acelerar();
carroEquipeVelocidade.acelerar();
carroEquipeTrapaceiros.acelerar();
carroEquipeVelocidade.acelerar();
carroEquipeTrapaceiros.velocidadeAtual = 200.0;
}
}
www.t2ti.com
12
Curso Java Starter
ENCAPSULAMENTO
www.t2ti.com
13
Curso Java Starter
seguir:
...
carroEquipeVelocidade.acelerar();
carroEquipeTrapaceiros.acelerar();
carroEquipeVelocidade.acelerar();
carroEquipeTrapaceiros.velocidadeAtual = 200.0;
}...
Compreendeu o problema? A equipe trapaceiros simplesmente apelou e
atribuiu o valor 200 ao campo velocidadeAtual, desconsiderando que a velocidade
mxima do carro 100 e sem respeitar o algoritmo (regra de negcio) implementado
no mtodo acelerar.
Para resolver isto ns iremos limitar o acesso aos atributos da classe
CarroCorrida de forma que estes s possam ser acessado internamente. Observe
como fica a nova classe:
class CarroCorrida {
//Estado
private Integer numeroIdentificacao;
private Double velocidadeAtual = 0.0;
private Double velocidadeMaxima = 100.0;
private Piloto piloto;
www.t2ti.com
14
Curso Java Starter
class CarroCorrida {
//Estado
private Integer numeroIdentificacao;
private Double velocidadeAtual = 0.0;
private Double velocidadeMaxima = 100.0;
private Piloto piloto;
//Comportamento...
//Demais mtodos foram suprimidos apenas para melhorar a visualizao
//...
www.t2ti.com
15
Curso Java Starter
public CarroCorrida()
{
www.t2ti.com
16
Curso Java Starter
class Corrida {
class Piloto {
www.t2ti.com
17
Curso Java Starter
class Corrida {
//Inicia a corrida
carroEquipeVelocidade.acelerar();
carroEquipeTrapaceiros.acelerar();
carroEquipeVelocidade.acelerar();
carroEquipeTrapaceiros.acelerar();
carroEquipeVelocidade.acelerar();
carroEquipeTrapaceiros.acelerar();
}
}
Preste ateno neste novo cdigo e compare-o com o que foi implementado
anteriormente, veja que agora no acessamos/modificamos nenhum atributo de forma
direta, somos obrigados a utilizar os mtodos de cada uma das classes.
Exerccios
*Respeite o encapsulamento em todos os exerccios.
www.t2ti.com
18
Curso Java Starter
www.t2ti.com
19
Curso Java Starter
13.Implemente uma classe que simule um cadastro de pessoal. Esta classe deve
armazenar at 100 pessoas (utilize a classe Pessoa) com seus respectivos
endereos. Esta classe deve ter os seguintes comportamentos: permitir o
cadastramento e excluso de pessoas do cadastro.
14.Faa uma classe Calculadora que realize as 4 operaes matemticas bsicas
(soma, diviso, multiplicao e subtrao) sobre dois valores (double) passados
como parmetros e retorne o resultado. Crie um programa que realize as 4
operaes e imprima os resultados obtidos.
15.Faa uma classe CalculadoraComercial, esta classe deve realizar, alm das 4
operaes bsicas, o clculo de porcentagens. O clculo da porcentagem deve
ser efetuado sobre 2 parmetros o valor total (double) e a porcentagem a ser
obtida (inteiro) retornando o resultado. Ateno, a classe CalculadoraComercial
deve ter um atributo Calculadora e transferir a responsabilidade pela realizao
das 4 operaes matemticas bsicas para o objeto Calculadora, ou seja, a
nica implementao nova ser o cculo da porcentagem.
16.Faca uma classe Conta que contenha o cliente (utilize a classe Pessoa
desenvolvida nos exerccios anteriores), o numero da conta, o saldo e o limite.
Estes valores deverao ser informados no construtor. Faa um mtodo depositar
e um mtodo sacar. O mtodo sacar ir devolver true ou false, em razo da
disponibilidade ou no de saldo. Faa um mtodo saldo que retorne o saldo do
cliente.
17.Utilize a classe Pessoa e a classe Sala, desenvolvidas nos exerccios anteriores,
e mais uma classe Escola com atributos nome, CNPJ e salas (mximo de 20
salas ocupadas). Faa um programa que:
Crie uma escola;
Adicione a esta escola algumas salas;
Adicione as salas pessoas (alunos);
Transfira um aluno de uma sala para outra.
www.t2ti.com
20
Curso Java Starter
Mdulo
05
Pacotes java.lang e java.util
Definio de Pacotes
package javainiciante;
import nome-do-pacote.nome-da-classe
import javainiciante.Aluno;
Ex2.: import java.util.Date; --> indica que ser usada a classe Date do pacote
java.util que est no diretrio \java\util.
Ex3.: import java.util.*; --> Neste exemplo, est sendo usado o smbolo * ao
www.t2ti.com
3
Curso Java Starter
invs do nome da classe. Isto significa que estaremos importando todas as classes
que pertencem ao pacote java.util.
A utilizao do import s necessria, caso a classe que est utilizando as
funcionalidades de outra classe estiver em um pacote diferente. Ex.: classe Professor
que est no mesmo pacote da classe Aluno:
package javainiciante;
O pacote java.lang
java.lang.String
Mtodo lenght()
www.t2ti.com
4
Curso Java Starter
class JavaIniciante {
Mtodo charAt()
class JavaIniciante {
www.t2ti.com
5
Curso Java Starter
class JavaIniciante {
Mtodo substring()
nome-da-string.substring(indice1, indice2)
www.t2ti.com
6
Curso Java Starter
class JavaIniciante {
public static void main (String args[]){
String s = "Java Iniciante";
System.out.println("Do 3 caratere at o fim: " + s.substring(2));
System.out.println("Do 1 caratere at o 6: " + s.substring(0, 6));
System.out.println("Do 4 caratere at o 13: " + s.substring(3, 13));
}
}
Mtodo trim()
O mtodo trim() tem por objetivo remover todos os espaos em branco que
aparecem no incio e no final de uma determinada string. Observe que sero
removidos apenas os espaos do incio e do fim da string no sero removidos os
espaos entre as palavras. Tem a seguinte sintaxe:
nome-da-string.trim()
class JavaIniciante {
public static void main (String args[]){
String s = " Java Iniciante ";
System.out.println("Com espaos: *" + s + "*");
System.out.println("Sem espaos: *" + s.trim() + "*");
}
}
Mtodo replace()
www.t2ti.com
7
Curso Java Starter
uma string. Devero ser informados como parmetros, o caracter a ser substitudo e
por qual caractere ser substitudo. Tem a seguinte sintaxe:
nome-da-string.replace(caracter-a-ser-substitudo, substituio)
class JavaIniciante {
public static void main (String args[]){
String s = "Java Iniciante";
System.out.println("Trocar caracter 'a' por 'u': " + s.replace("a", "u"));
System.out.println("Trocar caracter 'a' por 'A': " + s.replace("a", "A"));
System.out.println("Trocar caracter espao por '_': " + s.replace(" ", "_"));
}
}
Mtodo String.valueOf()
class JavaIniciante {
www.t2ti.com
8
Curso Java Starter
Mtodo split()
nome-da-string.split(caractere);
class JavaIniciante {
Comparando Strings
www.t2ti.com
9
Curso Java Starter
class JavaIniciante {
string1.equals(string2)
class JavaIniciante {
www.t2ti.com
10
Curso Java Starter
java.lang.Math
O mtodo max() utilizado para verificar o maior valor entre dois nmeros, e
o mtodo min() utilizado para verificar o menor valor entre dois nmeros, que
podem ser do tipo double, float, int ou long. Observe a seguir a sintaxe destes
mtodos:
Math.max(valor1, valor2);
Math.min(valor1, valor2);
class JavaIniciante {
www.t2ti.com
11
Curso Java Starter
Mtodo random()
O mtodo random() utilizado para gerar valores de forma aleatria. Toda vez
que este mtodo chamado, ser gerado um valor do tipo double entre 0.0 e 1.0 (o
valor 1.0 nunca gerado). Veja a sintaxe deste mtodo:
Math.random()
class JavaIniciante {
class JavaIniciante {
www.t2ti.com
12
Curso Java Starter
Classes Wrapper
Classes wrapper so classes usadas para embutir tipos primitivos para que
possam ser utilizados como objetos. Cada tipo primitivo tem a sua classe wrapper
correspondente. As classes wrapper so: Character, Byte, Short, Integer, Long, Float,
Double e Boolean.
Cada classe wrapper permite manipular tipos primitivos como objetos da
classe Object. Desta forma, valores do tipo primitivo podem ser processados de forma
polimrfica (assunto ser abordado no mdulo 09) se forem mantidos como objetos
das classes wrapper.
Como fazer para obter um int que est armazenado em sua classe wrapper?
Como fazer para obter um double que est armazenado em sua classe
wrapper?
O exemplo a seguir mostra a resposta para estas duas perguntas:
class JavaIniciante {
O pacote java.lang possui vrias classes. uma boa prtica consultar a API
(esse assunto ser abordado no prximo mdulo) deste pacote para aprender mais
sobre o mesmo.
www.t2ti.com
13
Curso Java Starter
O pacote java.util
java.util.Calendar
class JavaIniciante {
www.t2ti.com
14
Curso Java Starter
Talvez no seja muito til a data representada desta maneira, ento vamos
obter cada campo separadamente. Vamos utilizar agora o mtodo get().
import java.util.Calendar;
class JavaIniciante {
www.t2ti.com
15
Curso Java Starter
import java.util.Calendar;
class JavaIniciante {
import java.util.Calendar;
class JavaIniciante {
www.t2ti.com
16
Curso Java Starter
}
}
data1.before(data2)
data1.after(data2)
import java.util.Calendar;
class JavaIniciante {
}
}
www.t2ti.com
17
Curso Java Starter
import java.util.Calendar;
class JavaIniciante {
Exerccios
www.t2ti.com
18
Curso Java Starter
www.t2ti.com
19
Curso Java Starter
Mdulo
06
JAVADOC E ARQUIVOS JAR
JAVADOC
www.t2ti.com
3
Curso Java Starter
www.t2ti.com
4
Curso Java Starter
caso, java.util.
Class classe que est sendo acessada.
Use Lista dos pacotes que a classe atual utiliza.
Tree Hierarquia de classes no pacote atual.
Deprecated classes e mtodos que no so recomendados utilizar.
Index ndice de mtodos e campos. Muito til quando no se sabe a classe.
Help ajuda de como utilizar a documentao.
www.t2ti.com
5
Curso Java Starter
www.t2ti.com
6
Curso Java Starter
www.t2ti.com
7
Curso Java Starter
Gerando o JAVADOC
package veiculo
www.t2ti.com
8
Curso Java Starter
Ser gerado javadoc para todas as classes que estiverem no pacote veiculo.
Se tiver mais de um pacote, faa assim:
www.t2ti.com
9
Curso Java Starter
www.t2ti.com
10
Curso Java Starter
/**
* Classe que define o comportamento de um Carro de Passeio
* @author Cludio
*
*/
public class CarroPasseio {
/**
* Este mtodo acelera o carro
*
*/
public void acelerar(){
//cdigo...
}
/**
* Frea o carro de acordo com a intensidade informada
* @param intensidade - intensidade da freada.
*/
public void frear(int intensidade){
//cdigo
}
/**
* Retorna a velocidade atual do veculo
* @return velocidade do veculo
*/
public int getVelocidade(){
//cdigo...
return 0;
}
}
Aps gerar o javadoc com o mesmo comando utilizado anteriormente, vemos
o resultado nas duas figuras seguintes:
www.t2ti.com
11
Curso Java Starter
www.t2ti.com
12
Curso Java Starter
Arquivos JAR
Depois que implementamos uma aplicao, vamos ter que distribu-la. Mas j
imaginou seu sistema com dezenas de pacotes e classes, e ter que mandar todos
esses arquivos para o cliente? Fica meio complicado no ?
Normalmente as aplicaes Java so distribudas em arquivos JAR, que um
arquivo compactado no formato ZIP, mas com a extenso .jar.
Vamos criar duas classes e criar um arquivo JAR contendo essas classes:
Agora vamos criar o arquivo JAR com as duas classes. Usamos o seguinte
comando:
www.t2ti.com
13
Curso Java Starter
onde:
cvf --> opes do comando jar (c = criar novo arquivo, v = mostrar o
andamento do arquivamento, f = especificar o nome do arquivo gerado)
PrimeiroJar.jar --> nome do arquivo que ser gerado
Aluno.class e Professor.class --> classes que sero arquivadas.
www.t2ti.com
14
Curso Java Starter
Perceba que agora inclumos a opo m onde temos que indicar o arquivo
manifest e o nome do arquivo manifest.mf.
Vamos executar nossa aplicao para ver o que acontece:
www.t2ti.com
15
Curso Java Starter
nico arquivo.
Pode ser que em um arquivo JAR no tenha nenhuma classe que contenha o
mtodo main. Este arquivo pode ser um framework, um driver JDBC, uma biblioteca,
etc.
Por exemplo, quando vamos utilizar o hibernate temos que adicionar ao
CLASSPATH o arquivo JAR que contm as bibliotecas do mesmo.
Agora voc deve tentar resolver a lista de exerccios abaixo. Qualquer
dificuldade envie para a lista de discusso.
Exerccios
www.t2ti.com
16
Curso Java Starter
www.t2ti.com
17
Curso Java Starter
Mdulo
Orientao a Objetos
07 Herana, Sobreescrita e
Polimorfismo
Introduo
Herana
www.t2ti.com
3
Curso Java Starter
}
public void setTanqueCombustivel(Double capacidadeTanqueCombustivel)
{
this.capacidadeTanqueCombustivel = capacidadeTanqueCombustivel;
}
public String getMarca() {
return marca;
}
public void setMarca(String marca) {
this.marca = marca;
}
www.t2ti.com
4
Curso Java Starter
www.t2ti.com
5
Curso Java Starter
www.t2ti.com
6
Curso Java Starter
www.t2ti.com
7
Curso Java Starter
}
E agora o meu Jipe tambm buzina:
www.t2ti.com
8
Curso Java Starter
Sobreescrita (override)
www.t2ti.com
9
Curso Java Starter
}
Obtemos a seguinte sada no console:
TanqueGuerra
CarroPasseio
Bmmmm
Fon fon
www.t2ti.com
10
Curso Java Starter
www.t2ti.com
11
Curso Java Starter
Bmmmm
Fon! Fon!
Polimorfismo
/**
* @param args
*/
public static void main(String[] args) {
www.t2ti.com
12
Curso Java Starter
}
return new Utilitario();
}
www.t2ti.com
13
Curso Java Starter
www.t2ti.com
14
Curso Java Starter
Modificador final
Agora a classe Jipe pode ser estendida porm qualquer uma de suas
subclasses no poder sobreescrever o mtodo buzinar(). Isto interessante quando
desejamos que determinado comportamento no seja alterado em hiptese nenhuma.
Nos pacotes bsicos da linguagem Java existem diversas classes que so
modificadas pelo final, temos como exemplo a classe String e a classe Math.
www.t2ti.com
15
Curso Java Starter
Classe Object
www.t2ti.com
16
Curso Java Starter
Mtodo Descrio
equals() Indica quando um objeto igual a este
toString() Retorna a representao textual deste objeto
hashCode() Retorna o cdigo hash para este objeto
toString do Jipe
www.t2ti.com
17
Curso Java Starter
classe Object.
Se no tivesse sido sobreescrito um dos possveis resultados a ser obtido
seria este:
Jipe@10385c1
EXERCCIOS
www.t2ti.com
18
Curso Java Starter
www.t2ti.com
19
Curso Java Starter
www.t2ti.com
20
Curso Java Starter
Apresentao
O Curso Java Starter foi projetado com o objetivo de ajudar quelas pessoas
que tm uma base de lgica de programao e desejam entrar no mercado de
trabalho sabendo Java,
Nosso objetivo que aps o estudo do Curso Java Starter o aluno no tenha
dificuldades para acompanhar um curso avanado onde poder aprender a
desenvolver aplicativos para Web, utilizando tecnologias como Servlets e JSP e
frameworks como Struts e JSF, alm do desenvolvimento para dispositivos mveis.
Albert Eije trabalha com informtica desde 1993. Durante esse perodo j
trabalhou com vrias linguagens de programao: Clipper, PHP, Delphi, C, Java, etc.
Atualmente mantm o site www.alberteije.com.
O curso Java Starter surgiu da idia dos trs amigos que trabalham juntos em
uma instituio financeira de grande porte.
www.t2ti.com
3
Curso Java Starter
08
e
Excees
Introduo
Herana - continuao
Ns j vimos que uma classe herda de sua classe pai as suas caractersticas
porm a subclasse no herda o construtor, isto , o construtor individual para cada
classe.
Sempre que o construtor de uma classe invocado ele invoca , quando no
explicitado, implicitamente o construtor da superclasse. Desta forma o construtor da
www.t2ti.com
4
Curso Java Starter
classe Object sempre invocado, pois todas as classes estendem dela. Observe o
cdigo abaixo referente a classe Veiculo:
//Demais membros...
//Demais membros...
public Jipe() {
!
}
//Demais membros...
O cdigo acima demonstrado no compila. Imagine o compilador tentando
www.t2ti.com
5
Curso Java Starter
adicionar a declarao super() porm sem sucesso. Isto acontece pois no existe
construtor sem parmetros na superclasse, existe apenas um construtor com o
parmetro marca do tipo String.
Podemos solucionar o problema apresentado de diversas maneiras, a
primeira seria invocando o construtor da superclasse e encaminhando um parmetro
padro para todas as instncias da classe Jipe:
public Jipe() {
super("Marca padro de jipe");
}
Invocao do construtor da superclasse
//Demais membros...
public Jipe(){
super("Marca padro de jipe");
}
//Demais membros...
Observe que, neste ltimo caso, temos um construtor sem parmetros, um
www.t2ti.com
6
Curso Java Starter
construtor que recebe o mesmo parmetro da superclasse e outro que recebe dois
parmetros (marca e modelo), ou seja, poderamos ter N-construtores, um para cada
situao.
Classes Abstratas
//corpo da classe
www.t2ti.com
7
Curso Java Starter
compilao:
//getters e setters...
Mtodo concreto
public void emitirSom()
{
System.out.println("Animal emitindo som");
}
}
Perceba que o mtodo emitirSom() na verdade dever ser sobreescrito por
cada uma das subclasses da classe Animal a fim de que forneam um comportamento
adeqado pois, cada tipo de animal emite um som diferente dos demais.
Porm, da forma como foi feito, esta condio no garantida pois,
podemos ter uma subclasse da classe Animal que no sobreescreve o mtodo emitir
som, no entanto existem formas de forarmos esta condio. Ao modificarmos o
mtodo com abstract impedimos que alguma das subclasses no implementem o
mtodo. Segue exemplo abaixo:
//getters e setters...
Mtodo abstrato
public abstract void emitirSom();
abstrato vlido.
Uma classe abstrata pode conter apenas mtodos abstratos, concretos ou
ambos. No entanto a presena de um mtodo abstrato torna, obrigatoriamente, a
classe abstrata tambm.
www.t2ti.com
8
Curso Java Starter
Interfaces
Pense em uma interface como sendo uma classe totalmente abstrata, isto
que no possui mtodos concretos. Desta forma, quando uma classe implementa uma
interface ela obrigatoriamente deve implementar o conjunto de mtodos definidos
pela interface.
Do site da SUN, implementar uma interface permite a uma classe tornar-
se mais formal em relao ao comportamento que ela promete fornecer. Interfaces
formam um contrato entre a classe e o mundo exterior, e este contrato garantido
em tempo de compilao pelo compilador. Se a sua classe deseja implementar uma
interface, todos os mtodos definidos pela interface devem aparecer no corpo antes
da sua classe ser compilada.
Em sntese, quando uma classe concreta implementa uma interface ela est
garantindo que possui os mtodos especificados bem como a implementao destes,
mesmo que o corpo do mtodo seja vazio. Aqui cabe uma observao: O uso de
interfaces garante a existncia do comportamento porm no garante a sua correta
implementao.
Da mesma forma que classes, a definio de uma interface cria um novo
www.t2ti.com
9
Curso Java Starter
www.t2ti.com
10
Curso Java Starter
}
Ento, podemos interpretar a situao da seguinte forma: A classe Animal
implementa a interface EmiteSom, mas deixou a responsabilidade pela implementao
do mtodo para a classe concreta Cachorro.
E agora o nosso mesmo mtodo limpar() utilizando a interface:
www.t2ti.com
11
Curso Java Starter
Excees
www.t2ti.com
12
Curso Java Starter
try{
//Cdigo perigoso
}catch(Exception e)
{
//tratamento da exceo
}
www.t2ti.com
13
Curso Java Starter
}
}
www.t2ti.com
14
Curso Java Starter
programa! no foi apresentada por uma exceo pois o nosso bloco try/catch no
foi capaz de captur-la, isto aconteceu pois ele foi construdo de forma que apenas
excees do tipo java.lang.ArrayIndexOutOfBoundsException sejam tratadas.
Para corrigir este problema podemos encadear mais um bloco catch que
capture todos os tipos de excees, vejamos:
www.t2ti.com
15
Curso Java Starter
www.t2ti.com
16
Curso Java Starter
comunicao NoRouteToHostException).
www.t2ti.com
17
Curso Java Starter
www.t2ti.com
18
Curso Java Starter
Exception in thread "main" QuantidadeLitrosException: Valor indevido. Era esperado um valor maior
que 0: -1.0
at Veiculo.abastecer(Veiculo.java:10)
at modulo10Main.main(modulo10Main.java:6)
Exerccios
www.t2ti.com
19
Curso Java Starter
www.t2ti.com
20
Curso Java Starter
anteriores (12, 13 e 14), efetue alguns saques e depsitos, tanto sobre o limite
extra quanto sobre saldo total, e ainda faa um saque que extrapole todo o
valor disponvel (limite extra + saldo total).
www.t2ti.com
21
Curso Java Starter
Mdulo
09
Colees
O Framework Collections
www.t2ti.com
3
Curso Java Starter
www.t2ti.com
4
Curso Java Starter
Muito interessante tudo isto mas, na prtica, quando devo utilizar uma ou
outra implementao? Qual a diferena entra cada uma destas interfaces?
A seguir sero explicados, simplificadamente, os principais benefcios
obtidos com o uso de cada grupo de interfaces e respectivas implementaes. A
compreenso das funcionalidades de cada uma das interfaces e implementaes
representa a parte mais importante deste mdulo.
Ento vamos l:
equals()
www.t2ti.com
5
Curso Java Starter
Neste exemplo o resultado obtido ser true, isto acontece pois agora o que
est sendo comparado o contedo de cada objeto String, ou seja o valor Pedro.
O importante que voc compreenda que ao utilizar os operadores de
igualdade, sobre objetos, (== ou !=) o que voc est verificando se as duas
referncias fazem aluso ao mesmo objeto. Ao utilizar o mtodo equals() ns estamos
verificando se os dois objetos so significativamente iguais (equivalentes).
A maioria das coisas (objetos) que importam, no contexto da computao,
possuem algum identificador nico ou alguma forma de identificao nica. Ex: Carro
placa/renavam, Pessoa CPF, Empresa CNPJ, Fatura cdigo, Nota fiscal
nmero/srie, Municpio Cdigo do IBGE, Produto cdigo de barras e etc.
Sendo assim ao sobreescrevermos o mtodo equals() devemos observar
estes identificadores e implementar o mtodo a fim de realizar os testes de igualdade
sobre este(s) atributo(s).
A fim de clarificar o que foi dito acompanhe o exerccio a seguir.
Exerccio resolvido
Crie uma classe que represente notas fiscais com cdigo, valor e data, e
sobreescreva o mtodo equals de forma que duas notas fiscais sejam consideradas
iguais apenas se seus cdigos forem idnticos.
Resoluo:
import java.util.Calendar;
import java.util.Date;
www.t2ti.com
6
Curso Java Starter
//Construtor parametrizado
public NotaFiscal(Integer codigo, Date dataEmissao, Double valor) {
super();
this.codigo = codigo; //atribui o valor do codigo
this.dataEmissao = dataEmissao; //atribui a data da emissao
this.valor = valor;//atribui o valor
}
//metodo equals
public boolean equals(Object obj) {
//Verifica se o objeto da classe NotaFiscal e verifica se os codigos so iguais
//Se a resposta for afirmativa para os dois testes retorna verdadeiro (true)
if((obj instanceof NotaFiscal) &&
((NotaFiscal)obj).getCodigo().equals(this.getCodigo()))
{
return true;
}else
{
return false;
}
}
hashcode()
www.t2ti.com
7
Curso Java Starter
Algumas definies
SET
www.t2ti.com
8
Curso Java Starter
Mtodo Descrio
add( Objeto ) Adiciona um elemento ao nosso Set, retorna true se o elemento
foi inserido
remove( Objeto ) Remove o elemento da nossa coleo, retorna true se o elemento
foi removido
iterator() Retorna um objeto do tipo Iterator
size() Retorna um int (inteiro) com a quantidade de elementos da
coleo
contains( Objeto ) Retorna true se o elemento j existe dentro do Set
clear() Elimina todos os elementos do Set
HashSet
Exerccio resolvido
www.t2ti.com
9
Curso Java Starter
nada). Crie um HashSet e armazene 10.000 notas fiscais com cdigos variando de 1 a
10.000, retire o elemento com cdigo 5.000. Compare os tempos de cada remoo.
Resoluo:
import java.util.Calendar;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
//Construtor parametrizado
public NotaFiscalHashSet(Integer codigo, Date dataEmissao, Double valor) {
super();
this.codigo = codigo; //atribui o valor do codigo
this.dataEmissao = dataEmissao; //atribui a data da emissao
this.valor = valor;//atribui o valor
}
//metodo equals
public boolean equals(Object obj) {
//Verifica se o objeto da classe NotaFiscal e verifica se os codigos so iguais
//Se a resposta for afirmativa para os dois testes retorna verdadeiro (true)
if((obj instanceof NotaFiscalHashSet) &&
((NotaFiscalHashSet)obj).getCodigo().equals(this.getCodigo()))
{
return true;//
}else
{
return false;
}
}
//metodo hashcode
public int hashCode() {
return codigo;//funcao de espalhamento retorna o valor do codigo
//return 2;//funcao de espalhamento retorna sempre o mesmo valor
}
//Retorna um long que identifica o tempo atual
public static long getTempoAtual()
{
return Calendar.getInstance().getTimeInMillis();
www.t2ti.com
10
Curso Java Starter
A partir dos resultados temos que, nesta situao, utilizando uma funo de
espalhamento mais adeqada o tempo total de pesquisa foi aproximadamente 60
vezes menor do que utilizando a pior funo de hashcode possvel, espalhando para
apenas um cdigo.
LinkedHashSet
www.t2ti.com
11
Curso Java Starter
Mtodo Descrio
hasNext() Retorna true se existe prximo elemento.
next() Retorna o prximo elemento na iterao.
A estrutura deste for-each poderia ser lida da seguinte forma : Para cada
elemento do tipo Carro existente na minha coleo de Carro (carrosHashSet) faa
isto;
Ns prximos exerccios as duas modalidades de iterao sero utilizadas e
a observao do uso prtico facilitar o entendimento.
Exerccio resolvido
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Set;
www.t2ti.com
12
Curso Java Starter
Resultado encontrado:
HashSet: 0 LinkedHashSet: 0
HashSet: 1 LinkedHashSet: 1
HashSet: 2 LinkedHashSet: 2
HashSet: 3 LinkedHashSet: 3
HashSet: 4 LinkedHashSet: 4
HashSet: 5 LinkedHashSet: 5
HashSet: 6 LinkedHashSet: 6
HashSet: 7 LinkedHashSet: 7
HashSet: 8 LinkedHashSet: 8
HashSet: 9 LinkedHashSet: 9
HashSet: 10 LinkedHashSet: 10
HashSet: 11 LinkedHashSet: 11
HashSet: 12 LinkedHashSet: 12
HashSet: 13 LinkedHashSet: 13
HashSet: 14 LinkedHashSet: 14
HashSet: 15 LinkedHashSet: 15
HashSet: 17 LinkedHashSet: 16
HashSet: 16 LinkedHashSet: 17
HashSet: 19 LinkedHashSet: 18
HashSet: 18 LinkedHashSet: 19
TreeSet
Exerccio resolvido
www.t2ti.com
13
Curso Java Starter
encontrada.
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.TreeSet;
Resultado encontrado:
www.t2ti.com
14
Curso Java Starter
LIST
Mtodo Descrio
add( Objeto ) Adiciona um elemento ao List, na ltima posio
get( ndice ) Retorna o elemento da posio do ndice
iterator() Retorna um objeto do tipo Iterator
size() Retorna um int (inteiro) com a quantidade de elementos da
coleo
www.t2ti.com
15
Curso Java Starter
ArrayList e Vector:
Um ArrayList pode ser visto como um array (vetor) porm dinmico, isto ,
ele aumenta o espao disponvel a medida que demandado. Ele organizado pelo
ndice, ou seja, temos alguma garantia quanto a ordem que encontraremos os
elementos.
Vector basicamente um ArrayList, no entanto seus mtodos so
sincronizados o que significa que o acesso por vrios processos simultaneamente
coordenado.
Antes de continuarmos falando das implementaes da interface List,
iremos introduzir uma nova caracterstica da linguagem Java e mostrar trechos de
cdigos que a utilizam junto com ArrayList e Vector:
//Criando ArrayList
List arrayList = new ArrayList();
//Adicionando um String
arrayList.add(new String("Texto"));
//Adicionando um Integer
arrayList.add(new Integer(3));
Isto era possvel pois nossas colees aceitam qualquer elemento que seja do tipo Object, e todas as classes criadas em Java
automaticamente herdam, e portanto so, da classe Object. No entanto, com o uso de Generics podemos definir de que tipo especfico ser a
nossa coleo. Abaixo temos um exemplo de ArrayList, parecido com o anterior, utilizando Generics:
www.t2ti.com
16
Curso Java Starter
arrayList.add(new Integer(5));
Perceba que a partir de agora este List aceita apenas objetos do tipo
Integer utilizando esta notao, declarao <Integer> junto a declarao da
Classe/Interface, evito que sejam inseridos indevidamente outros tipos que no sejam
Integer na minha coleo.
LinkedList:
Exerccio resolvido
import java.util.LinkedList;
import java.util.List;
import java.util.ArrayList;
import java.util.Vector;
www.t2ti.com
17
Curso Java Starter
inicio = System.currentTimeMillis();
//percorrendo todos os elementos do Vector
for(int i = 0; i < vector.size(); i++)
{
vector.get(i);//Obtendo elementos do Vector
}
//fim da contagem do tempo
fim = System.currentTimeMillis();
System.out.println("Obter elemento. Tempo Vector: "+(fim-inicio)+" ms");
Resultado obtido:
www.t2ti.com
18
Curso Java Starter
MAP
Mtodo Descrio
put( chave, objeto ) Adiciona a chave e o elemento
get( chave ) Retorna o elemento de acordo com a chave
iterator() Retorna um objeto do tipo Iterator
size() Retorna um int (inteiro) com a quantidade de elementos da
coleo
containsKey( chave ) Retorna true se a chave j existe
clear() Elimina todos os elementos do Set
containsValue( objeto ) Retorna true se o objeto j existir no Map
HashMap e Hashtable
//Criacao do HashMap
Map notasFiscaisMap = new HashMap();
www.t2ti.com
19
Curso Java Starter
//Obtem nf2
NotaFiscal nf = (NotaFiscal)notasFiscaisMap.get(2);
LinkedHashMap
//Criacao do LinkedHashMap
Map notasFiscaisMap = new LinkedHashMap();
//Obtem nf2
NotaFiscal nf = (NotaFiscal)notasFiscaisMap.get(2);
TreeMap
//Inserindo os valores
treeMap.put(5, "Numero 5");
treeMap.put(1, "Numero 1");
www.t2ti.com
20
Curso Java Starter
Numero 1
Numero 5
Numero 22
Numero 100
QUEUE
Mtodo Descrio
add( objeto ) Adiciona o elemento, joga uma exceo se no for possvel
incluir
offer( objeto ) Idntico ao add, porm no joga exceo em caso de falha
remove() Remove o elemento, joga uma exceo se no houver
elementos
poll() Idntico ao remove(), porm retorna nulo caso no hajam
elementos
element() Retorna elemento elemento inicial, joga exceao caso no haja
peek() idntico ao element(), porm retorna nulo caso no haja
elemento
PriorityQueue
www.t2ti.com
21
Curso Java Starter
Resultado obtido:
poll: -2
poll: 0
poll: 2
poll: 3
poll: 5
poll: 5
poll: null
A classe Collections
www.t2ti.com
22
Curso Java Starter
Da mesma forma que para arrays (vetores), Java fornece uma classe com
um conjunto de funcionalidades muito utilizadas (ordenao, pesquisa, preenchimento
e etc.) na manipulao das estruturas de dados do Framework Collections tambm
existe uma classe similar (Collections)
A classe Collections (mesmo nome do framework) para as colees do
framework a mesma coisa que a classe Arrays para os vetores (arrays)
convencionais, portanto, quando voc precisar destes tipos de funcionalidades, ir
apenas adaptar s suas necessidades, se for necessrio.
A seguir iremos explorar brevemente as principais funcionalidades.
Ordenao
//Criao do ArrayList
List arrayList = new ArrayList();
//Adicionando elementos
arrayList.add("Miguel");
arrayList.add("Albert");
arrayList.add("Fernando");
arrayList.add("Mario");
//Ordenando
Collections.sort(arrayList);
//Imprimindo o resultado
System.out.println(arrayList);
Resultado obtido:
Mistura/Desordenao
www.t2ti.com
23
Curso Java Starter
//Criao do ArrayList
List arrayList = new ArrayList();
//Adicionando elementos
arrayList.add("Miguel");
arrayList.add("Albert");
arrayList.add("Fernando");
arrayList.add("Mario");
//Misturando elementos
Collections.shuffle(arrayList);
//Sorteando o primeiro nome e imprimindo o resultado
System.out.println(arrayList.get(0));
Fernando
Pesquisa:
//Criao do ArrayList
List arrayList = new ArrayList();
//Adicionando elementos
arrayList.add("Miguel");
arrayList.add("Albert");
arrayList.add("Fernando");
arrayList.add("Mario");
//Pesquisando
int resultado = Collections.binarySearch(arrayList, "Albert");
//Imprimindo resultado
www.t2ti.com
24
Curso Java Starter
Resultado da execuo:
Resultado da pesquisa: 1
EXERCCIOS
1. Implemente cdigo que possua um ArrayList e insira 200 Strings nesta lista.
www.t2ti.com
25
Curso Java Starter
5. Adicione os nmeros 100, 20, 200, 30, 80, 40, 100, 200 a um List, percorra
todos os elementos utilizando for-enhanced (for-each) e calcule a mdia.
6. Adicione os nmeros 100, 20, 200, 30, 80, 40, 100, 200 a um List, percorra
todos os elementos utilizando um Iterator e calcule a mdia.
7. Adicione os nmeros 100, 20, 200, 30, 80, 40, 100, 200 a um Set, percorra
todos os elementos utilizando for-enhanced (for-each) e calcule a mdia.
9. Repita o exerccio anterior porm, sem repetir os cdigos das chaves. Observe
o resultado. Quantos elementos tm a coleo?
www.t2ti.com
26
Curso Java Starter
16. Crie uma classe Aluno com os atributos Nome , RG e Idade. Sobreescreva o
mtodo equals() de forma que dois alunos sejam considerados iguais apenas se
possurem o mesmo RG.
17. Qual interface do Framework Collections voc utilizaria para representar uma
Turma de faculdade, considerando que cada aluno est matriculado apenas uma
vez?
20. Faa novamente o exerccio 8 porm, utilizando a nova classe Aluno, agora
com o mtodo hashCode() implementado.
www.t2ti.com
27
Curso Java Starter
Mdulo
10
Aplicaes grficas
SWING
Interface grfica em Java
www.t2ti.com
3
Curso Java Starter
import javax.swing.JButton;
import javax.swing.JFrame;
private PrimeiroSwing(){
//definimos o ttulo da janela
janela.setTitle("Primeira Aplicao Grfica");
//definimos a largura e a altura da janela
janela.setSize(350, 150);
//define que ao fechar a janela, encerre a aplicao
janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//adicionamos o botao janela
janela.add(botao);
//mostramos a janela
janela.setVisible(true);
}
}
www.t2ti.com
4
Curso Java Starter
Agora temos uma janela com um boto. Perceba que o boto ocupou toda a
rea da janela, e ao clicar no boto nada acontece. Isto acontece porque no foi
definido nenhum layout para a janela e nenhum evento para o boto.
O mtodo setDefaultCloseOperation() foi usado para definir que ao
fecharmos a janela, encerra-se a aplicao (JFrame.EXIT_ON_CLOSE). Normalmente
definimos este valor na janela principal da aplicao. Quando instanciamos um
JFrame, o valor padro definido como (JFrame.HIDE_ON_CLOSE). Se deixarmos com o
valor padro, ao fecharmos a janela, o processo continuar rodando, apenas ser
escondida a janela. Temos tambm a opo (JFrame.DISPOSE_ON_CLOSE) que destri a
janela, sem encerrar a aplicao caso esta no seja a janela principal do sistema.
No decorrer do estudo dos gerenciadores de layout e de tratamento de
eventos, veremos novos componentes do swing e no final do mdulo seus principais
mtodos.
Gerenciadores de Layout
www.t2ti.com
5
Curso Java Starter
FlowLayout
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
private ExemploFlowLayout(){
//definimos o ttulo da janela
janela.setTitle("Exemplo de um FlowLayout");
//definimos a largura e a altura da janela
janela.setSize(300, 100);
//define a posio da janela na tela
janela.setLocation(50, 50);
//define que ao fechar a janela, encerre a aplicao
janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//definimos o layout do painel
painel.setLayout(new FlowLayout(FlowLayout.CENTER, 30, 20));
//adicionamos o rotulo ao painel
painel.add(rotulo);
//adicionamos o texto ao painel
painel.add(texto);
//adicionamos o botao ao painel
painel.add(botao);
//adicionamos o painel janela
janela.add(painel);
//mostramos a janela
www.t2ti.com
6
Curso Java Starter
janela.setVisible(true);
}
}
GridLayout
www.t2ti.com
7
Curso Java Starter
import java.awt.GridLayout;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
private ExemploGridLayout(){
//definimos o ttulo da janela
janela.setTitle("Exemplo de um FlowLayout");
//definimos a largura e a altura da janela
janela.setSize(300, 200);
//define a posio da janela na tela
janela.setLocation(50, 50);
//define que ao fechar a janela, encerre a aplicao
janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//definimos o layout do painel
painel.setLayout(new GridLayout(3, 2, 5, 1));
//adicionamos o rotulo1 ao painel
painel.add(rotulo1);
//acrescentamos algumas frutas a lista
listModel.addElement("Ma");
listModel.addElement("Uva");
listModel.addElement("Pera");
//adicionamos a lista ao painel
painel.add(lista);
//adicionamos o rotulo2 ao painel
painel.add(rotulo2);
//acrescentamos algumas bebidas ao combo
combo.addItem("gua");
combo.addItem("Refrigerante");
combo.addItem("Suco");
//adicionamos o combo ao painel
painel.add(combo);
//adicionamos o botao ao painel
www.t2ti.com
8
Curso Java Starter
painel.add(botao);
//adicionamos o painel janela
janela.add(painel);
//mostramos a janela
janela.setVisible(true);
}
}
BorderLayout
www.t2ti.com
9
Curso Java Starter
import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
private ExemploBorderLayout(){
//definimos o ttulo da janela
janela.setTitle("Exemplo de um BoderLayout");
//definimos a largura e a altura da janela
janela.setSize(300, 200);
//define a posio da janela na tela
janela.setLocation(50, 50);
//define que ao fechar a janela, encerre a aplicao
janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//definimos o layout do painel
painel.setLayout(new BorderLayout());
//adicionamos os botes ao painel
painel.add("North", norte);
painel.add("South", sul);
painel.add("East", leste);
painel.add("West", oeste);
painel.add("Center", centro);
//adicionamos o painel janela
janela.add(painel);
//mostramos a janela
janela.setVisible(true);
}
}
www.t2ti.com
10
Curso Java Starter
CardLayout
www.t2ti.com
11
Curso Java Starter
JPanel (painis), sendo que um deles ser gerenciado pelo CardLayout e os outros
sem gerenciador contendo um JLabel (rtulo). Para alternar entre os painis, vamos
incluir dois JButton (botes) em um JPanel:
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
private ExemploCardLayout(){
//definimos o ttulo da janela
janela.setTitle("Exemplo de um CardLayout");
//definimos a largura e a altura da janela
janela.setSize(300, 200);
//define a posio da janela na tela
janela.setLocation(50, 50);
//define que ao fechar a janela, encerre a aplicao
janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//definimos o layout da janela
janela.setLayout(new BorderLayout());
//definimos o painelselecao com o GridLayout e incluimos os botoes
painelSelecao.setLayout(new GridLayout(1,2));
painelSelecao.add(botao1);
painelSelecao.add(botao2);
//adicionamos os rotulos a seus respectivos paineis
painel1.add(rotulo1);
painel2.add(rotulo2);
//definimos o layout do painelCard
painelCard.setLayout(new CardLayout());
//adicionamos os paineis quem contm os rotulos ao painelCard
painelCard.add(painel1, "p1");
painelCard.add(painel2, "p2");
www.t2ti.com
12
Curso Java Starter
nome-do-cardlayout.show(nome-do-conteiner, identificador)
www.t2ti.com
13
Curso Java Starter
Tratamento de Eventos
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
www.t2ti.com
14
Curso Java Starter
private ExemploFlowLayout(){
//definimos o ttulo da janela
janela.setTitle("Exemplo de um FlowLayout");
//definimos a largura e a altura da janela
janela.setSize(300, 100);
//define a posio da janela na tela
janela.setLocation(50, 50);
//define que ao fechar a janela, encerre a aplicao
//janela.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
//definimos o layout do painel
painel.setLayout(new FlowLayout(FlowLayout.CENTER, 30, 20));
//adicionamos o rotulo ao painel
painel.add(rotulo);
//adicionamos o texto ao painel
painel.add(texto);
//adicionamos o botao ao painel
painel.add(botao);
//adicionamos o painel janela
janela.add(painel);
//mostramos a janela
janela.setVisible(true);
//registramos o botao ao Listener
botao.addActionListener(this);
}
Na linha mostrada pela seta azul, registramos o boto para que os eventos
gerados por ele sejam tratados pela interface.
O bloco representado pela seta verde, onde definimos o que ser feito ao ser
gerado um evento. Para sabermos qual componente gerou o evento, utilizamos o
mtodo getSource() da classe ActionEvent. Neste exemplo, se o componente que
gerou o evento foi o boto, ento mostramos uma mensagem com o contedo do
campo texto.
www.t2ti.com
15
Curso Java Starter
Componentes Swing
JButton
Mtodo Descrio
JButton() Constri um boto sem texto *
JButton(String) Constri um boto com o texto informado *
JButton(String, Icon) Constri um boto com o texto e imagem informados *
getText() Obtm o texto do boto
setText(String) Define o texto do boto
setEnabled(boolean) Define se o boto est habilitado (true) ou desabilitado
(false)
* construtores
Exemplo:
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
www.t2ti.com
16
Curso Java Starter
public Botoes(){
janela.setSize(240,70);
janela.setTitle("Exemplo de JButton");
janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
janela.setLayout(new GridLayout(1,2));
//definimos o texto dos botes
botao1.setText("Fechar");
botao2.setText("OK");
//registramos os botoes no ActionListener
botao1.addActionListener(this);
botao2.addActionListener(this);
//adicionamos os botes a janela
janela.add(botao1);
janela.add(botao2);
janela.setVisible(true);
}
JOptionPane
www.t2ti.com
17
Curso Java Starter
if (e.getSource() == botao2){
//se pressionado o botao2, solicitamos ao usurio digitar uma mensagem
String mensagem = JOptionPane.showInputDialog("Informe a mensagem:");
//mostramos a mensagem informada pelo usurio
JOptionPane.showMessageDialog(null, mensagem);
}
}
No bloco indicado pela seta azul, declaramos um objeto do tipo int que ir
receber o valor da resposta na caixa de confirmao. A sintaxe utilizada para o
mtodo showConfirmDialog() :
JOptionPane.showConfirmDialog(Component, mensagem, ttulo, botes)
Component refere-se a um objeto do tipo continer que permite
definir a posio da tela em que a caixa de mensagem aparecer. Quando
utilizado null, a mensagem centralizada na tela.
Mensagem mensagem do tipo String que ser informada ao usurio
Ttulo texto que aparece na barra de ttulo. Tambm do tipo String
Tipo os botes que estaro presentes na caixa de dilogo. No nosso
exemplo, esto os botes OK e Cancel.
No bloco indicado pela seta amarela, declaramos um objeto do tipo String que
ir receber a mensagem informada pelo usurio no InputDialog. O parmetro
utilizado a mensagem que ser informada ao usurio.
Executando a aplicao, ao pressionar o boto OK temos:
www.t2ti.com
18
Curso Java Starter
JLabel
Mtodo Descrio
JLabel() Constri um label sem texto
JLabel(String) Constri um label com o texto informado
JLabel(Icon) Constri um label contendo a imagem especificada
setText(String) Define o texto a ser mostrado
www.t2ti.com
19
Curso Java Starter
JTextField
Mtodo Descrio
JTextField() Constri um novo campo texto
JTextField(int) Constri um campo texto com o nmero de colunas
(tamanho) informado
JTextField(String) Constri um campo texto com o texto especificado
setText(String) Define o texto do campo texto para o informado
getText() Retorna o texto do campo texto
setEnabled(boolean) Define se o campo texto est habilitado (true) ou
desabilitado (false)
JComboBox
Mtodo Descrio
JComboBox() Cria uma caixa de seleo
addItem(Object) Adiciona o objeto como um novo item
getSelectedItem() Retorna o objeto que est selecionado
getSelectedIndex() Retorna um valor do tipo int que representa o ndice
selecionado
removeItemAt(int) Remove o item com o ndice especificado
removeAllItems() Remove todos os itens da lista
Exemplo:
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
www.t2ti.com
20
Curso Java Starter
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
public ExemploCombo(){
janela.setSize(240,100);
janela.setTitle("Exemplo de JComboBox");
janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
janela.setLayout(new FlowLayout());
janela.add(label);
janela.add(combo);
janela.add(botao);
janela.setVisible(true);
botao.addActionListener(this);
//adicionamos as cores ao combo
combo.addItem("Vermelho");
combo.addItem("Verde");
combo.addItem("Azul");
}
JCheckBox
www.t2ti.com
21
Curso Java Starter
Mtodo Descrio
JCheckBox() Cria um checkbox sem texto e no selecionado
JCheckBox(String, boolean) Cria um checkbox com o texto e estado especificados
isSelected() Retorna se o checkbox est selecionado (true) ou
no (false)
Exemplo:
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public ExemploCheckBox(){
janela.setSize(240,100);
janela.setTitle("Exemplo de JCheckBox");
janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
janela.setLayout(new GridLayout(2,1));
painel.setLayout(new GridLayout(1,1));
painel.add(chk1);
painel.add(chk2);
painel.add(chk3);
janela.add(painel);
janela.add(botao);
janela.setVisible(true);
botao.addActionListener(this);
}
www.t2ti.com
22
Curso Java Starter
JRadioButton
Mtodo Descrio
JRadioButton() Cria um radio button sem texto e no
selecionado
JRadioButton(String, boolean) Cria um radio button com o texto e estado
especificados
setSelected(boolean) define se o radio button est ou no
selecionado (true ou false)
ButtonGroup() Cria um grupo para radio buttons
Nome-do-grupo.add(JRadioButton) Adiciona um radio button a um grupo
Exemplo:
import java.awt.GridLayout;
www.t2ti.com
23
Curso Java Starter
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
www.t2ti.com
24
Curso Java Starter
Exerccios
Aprenda com quem tambm est aprendendo, veja e compartilhe as suas
respostas no nosso Frum:
4. Crie uma aplicao que calcule o valor final de uma venda. Caso o
pagamento seja realizado em dinheiro, no haver acrscimo, caso seja em carto,
ter um acrscimo de 5% e caso seja em cheque, o acrscimo ser de 10%. Utilize o
JRadioButton para que o usurio escolha a forma de pagamento e o JTextField
para o usurio informar o valor da venda e mostrar o resultado.
www.t2ti.com
25
Curso Java Starter
www.t2ti.com
26
Curso Java Starter
11. No pacote swing existem muitas classes. Neste mdulo foram vistos
alguns componentes bsicos e seus principais mtodos. Acesse a documentao deste
pacote para aprender mais sobre essas classes e seus respectivos mtodos:
http://java.sun.com/javase/6/docs/api/
www.t2ti.com
27