Você está na página 1de 22

1

Frederico CostaGuedes Pereira2000


Java: Sintaxe
Estrutura de uma aplicao
Tipos, variveis, operadores e comandos
Mtodos e classes
Arranjos, Strings e outras classes
slides: jfsintaxe
Fred (C) 2003 Java: Sintaxe 2
Estrutura de uma aplicao
uEm Java:
Desenvolver uma aplicao consiste em escrever
classes de objetos
As classes podem representar objetos reais do domnio
da aplicao ou estruturas abstratas
Uma aplicao em execuo consiste num conjunto de
objetos, criados a partir das classes, trocando
mensagens entre si
Saber como fatorar a soluo do problema em classes
requer experincia e prtica
Fred (C) 2003 Java: Sintaxe 3
Estrutura de uma aplicao
uUma classe em Java uma coleo identificada de
variveis (estado) e mtodos (comportamento)
que operam sobre essas variveis.
Unidade fundamental de programao em Java!
uUma aplicao Java pode possuir dezenas,
centenas ou at milhares de classes
Fred (C) 2003 Java: Sintaxe 4
Estrutura de uma aplicao
uA classe a menor unidade de cdigo Java no
possvel escrever um programa Java sem construir
uma classe!
O compilador no reconhece fragmentos de cdigo
menores que uma classe
A classe tambm a unidade bsica de execuo de Java
uA aplicao inicia a execuo a partir de um mtodo
especial chamado mainexistente numa das classes
(classe de aplicao)
Fred (C) 2003 Java: Sintaxe 5
Estrutura de uma aplicao
uEstrutura de uma classe Java:
class NomeDaCl asse {
decl ar aes de var i vei s membr o;
decl ar aes de mt odos( ) {
decl ar aes de var i vei s l ocai s;
comandos;
}
}
Fred (C) 2003 Java: Sintaxe 6
Estrutura de uma aplicao
uClasse que define um cliente num sistema de loja:
public class Cliente {
private String nome;
private String endereco;
private char sexo;
public Cliente(String nome,
String endereco) {
this.nome = nome;
this.endereco = endereco;
}
public void mudeNome(String novoNome) {
this.nome = novoNome;
}
Variveis membro
estado
comportamento
M

t
o
d
o
s
Operadores
2
Fred (C) 2003 Java: Sintaxe 7
Estrutura de uma aplicao
uContinuao da classe Cliente...
public String informeNome(){
return nome;
}
public String imprima() {
String c = "Cliente ";
c += "\n - Nome: " + nome;
c += "\n - Endereco: " + endereco;
c += "\n - Sexo: " + sexo;
System.out.println(c); }
}
Mtodos
Varivel local a um mtodo
Fred (C) 2003 Java: Sintaxe 8
Estrutura de uma aplicao
uA classe Cl i ent e Cl i ent e salva no arquivo Cliente.java
uA classe compilada para produzir o arquivo de
bytecodeschamado Cliente.class
C:\ javac Cliente. java ( Cliente.class)
uEm geral, cada arquivo .java contm a definio de
uma classe pblica
uComo podemos usar a classe Cliente (isto , onde
podemos criar objetos desta classe)?
Fred (C) 2003 Java: Sintaxe 9
public class AplicacaoCliente {
public static void main (String[] args){
Cliente a, b;
a = new Cliente("Bart", "Springfield");
b = new Cliente("Cartman", "South Park");
System.out.println("Nome do cliente a ="+
a.informeNome());
b.imprima();
}
}
Estrutura de uma aplicao
uClasse de aplicao: variveis locais ao mtodo main
Fred (C) 2003 Java: Sintaxe 10
Estrutura de uma aplicao
uA classe Apl i cacaoCl i ent e Apl i cacaoCl i ent e salva no arquivo
AplicacaoCliente.java
uA classe compilada para produzir o arquivo de
bytecodes chamado AplicacaoCliente.class
C:\ javac AplicacaoCliente. java
uA classe executada com o interpretador Java:
C:\ java AplicacaoCliente
Nome da classe, sem a extenso .class!
Fred (C) 2003 Java: Sintaxe 11
uExemplo de execuo em linha de comando:
Estrutura de uma aplicao
Y:\projetos> javac AplicacaoCliente.java
Y:\projetos> java AplicacaoCliente
Nome do cliente a =Bart
Cliente
- Nome: Cartman
- Endereo: South Park
-Sexo:
Y:\projetos> _
Fred (C) 2003 Java: Sintaxe 12
uExemplo de execuo no BlueJ:
Estrutura de uma aplicao
Terminal
3
Fred (C) 2003 Java: Sintaxe 13
Estrutura de uma aplicao
uClasses de aplicao:
So aquelas por onde a execuo do sistema inicia
Possuem um mtodo main com a seguinte assinatura:
public static void main(String[] args)
O interpretador Java s aceita executar classes que
possuam o mtodo main definido conforme acima
uQualquer classe pode possuir um mtodo main e
ser classe de aplicao (embora no seja usual)
Em geral, o main destas classes serve para testes
Fred (C) 2003 Java: Sintaxe 14
Estrutura de uma aplicao
uElementos da linguagem, em ordem crescente de
complexidade:
Caracteres
Tipos de dados, valores literais, identificadores
Operadores e expresses
Comandos
Mtodos
Classes
Pacotes
C
O
M
P
L
E
X
I
D
A
D
E
Fred (C) 2003 Java: Sintaxe 15
Caracteres
uUso do padroUnicode: conjunto de caracteres de
16 bits
65536 caracteres distintos!
uCaracteres Unicode so gravados em arquivos
usando um formato chamado UTF-8
uInsero de caracteres Unicodeno cdigo fonte:
\uxxxx
\u3c00 =
Fred (C) 2003 Java: Sintaxe 16
Comentrios
uTrs tipos de comentrios:
// comentrio de linha
/*
comentrio de bloco
*/
/**
Classe <b>Cliente</b>
Comentrio de bloco para o <i>javadoc</i>
@author Frederico Costa
*/
Fred (C) 2003 Java: Sintaxe 17
Identificadores
uIdentificadores nomeiam variveis (membro, locais,
parmetros, etc), mtodos e classes
uApenas os caracteres especiais "_" e "$" so
permitidos, alm de letras e nmerosunicode
uDevem iniciar por uma letra ou pelos smbolos _ ou
$ (evite-os, pois o compilador os utiliza)
MAISCULAS minsculas
Fred (C) 2003 Java: Sintaxe 18
Identificadores (estilo a ser adotado)
uClasses:
Primeira letra de cada palavra maiscula
Ex: MinhaClasse, Pilha
uMembros de uma classe e variveis locais:
Primeira letra minscula
Ex: idade, marcaModelo, getCor(), getSalarioFinal(), i,
cont, somaTotal
uConstantes de classe (static final):
Todas as letras maisculas
Ex: PI, MAX_ALUNOS, MEDIA
4
Fred (C) 2003 Java: Sintaxe 19
Palavras reservadas
abstract
boolean
break
byte
case
catch
char
class
const
continue
default
do
double
else
extends
false
final
finally
float
for
goto
assert
if
implements
import
instanceof
int
interface
long
native
new
null
package
private
protected
public
return
short
static
strictfp
super
switch
synchronized
this
throw
throws
transient
true
try
void
volatile
while
Fred (C) 2003 Java: Sintaxe 20
Tipos de Dados em Java
uJava possui duas categorias de tipos de dados:
uTipos primitivos: possuem representaes
definidas em termos de bytes
As variveis destes tipos guardam valores dentro da
faixa definida pelo tipo
uTipos referenciveis: contm uma referncia para
os dados na memria, cujas representaes so
definidas pela classe do objeto
As variveis destes tipos contm um ponteiro p/ objeto
Fred (C) 2003 Java: Sintaxe 21
Tipos primitivos
Tipo Default Tamanho Domnio
boolean false 1bit NA
char \u0000 16bits \u0000 a \uFFFF
byte 0 8bits -128 a 127
short 0 16bits -32768 a 32767
int 0 32bits -2147483648 a
2147483647
long 0 64bits -9223372036854775808 a
9223372036854775807
float 0.0f 32bits 1.4E-45 a
3.4028235E+38
double 0.0 64bits 4.9E-324 a
1.797693134862E+308
Fred (C) 2003 Java: Sintaxe 22
Tipos primitivos
uTipo boolean
Dois valores: true e false
uTipo char
Valores delimitados por apstrofos: char c ='c'
Uso de literais unicode: char c =\u0041
Caracteres especiais:
\b(backspace) \t(tabulao)
\n(nova linha) \r(return)
\' (apstrofos) \"(aspas)
Fred (C) 2003 Java: Sintaxe 23
Tipos primitivos
uTipos inteiros (byte, short, int, long)
Literais na base decimal:
0, 1, 123, -23456
Literais nas bases hexadecimal e octal:
0xcafe //51966 em hexa
0377 //255 em octal
Inteiros(32 bits) x inteiros longos (64bits)
1234
1234L //long
0xF34L //long em hexa
Fred (C) 2003 Java: Sintaxe 24
Tipos primitivos
uTipos de ponto flutuante (float e double)
Literais:
0.0, 1.0, .01, -3.5
Notao cientfica:
1.2345E02 //1.2345 x 10
2
1e-6 //1 x 10
-6
Literais ponto-flutuante so sempre double!
12.34 //double
12.34f //float
6.02e23F //float
5
Fred (C) 2003 Java: Sintaxe 25
Converso de tipos
uJava permite converses entre inteiros (byte,
short, int, long), caractere (char) e pontos
flutuantes (float e double)
uO tipo boolean o nico primitivo que no
convertido em nenhum outro
uTipos de converso
Converses ampliadoras (widening conversions)
Converses redutoras (narrowing conversions)
Fred (C) 2003 Java: Sintaxe 26
Converses ampliadoras
uUm valor de um tipo convertido para um tipo
maior, isto , um representado por mais bits
uSo realizadas automaticamente
uExemplos:
int i = 20;
float f = i; //20 convertido para float
int i = A; //65 convertido para int
Math.sqrt(4); //4 convertido para double
Fred (C) 2003 Java: Sintaxe 27
Converses redutoras
uUm valor convertido para um tipo com menos bits
uNoso realizadas automaticamente
uO programador deve confirmar a reduo com um
cast, do contrrio o cdigo no compilado
uExemplos:
int i = 13;
byte b = i; //Erro de compilao!
b = (byte) i; //Ok!
i = (int) 32.601; //i recebe 32
cast
Fred (C) 2003 Java: Sintaxe 28
Tipos de referncia
uAs variveis so referncias para objetos em
memria
uUma classe define um tipo referenciado
uOs arranjos tambm so tipos referenciados
Referncia
(varivel)
Objeto em memria
Tipos referenciados sero
abordados mais adiante
Fred (C) 2003 Java: Sintaxe 29
Operadores
uOperadores aritmticos
Resultam num valor numrico (inteiro ou ponto flutuante)
uOperadores de incrementoe decremento
Resultam num valor numrico (inteiro ou ponto flutuante)
uOperadores relacionais: comparam expresses
Resultam num valor booleano (true ou false)
uOPeradores lgicos: compem expresses lgicas
Produzem um valor booleano
Fred (C) 2003 Java: Sintaxe 30
Operadores
uOperadores de atribuio
Executam uma operao seguida de uma atribuio
uOperador condicional
Condiciona seu valor de retorno a uma expresso lgica
uOperador instaceof: verifica se um objeto
instncia de uma classe
Resulta num valor boolean
uOperador new: instancia uma classe
Produz um objeto da classe
6
Fred (C) 2003 Java: Sintaxe 31
Operadores aritmticos
uSmbolos:
Adio: +
Subtrao: -
Multiplicao: *
Diviso: /
Resto da diviso inteira: %
uExemplos:
c = 7 % 3; //c receber 1
x = 5 + 10 / 2; //x receber 10
Fred (C) 2003 Java: Sintaxe 32
Operadores incremento/decremento
uSmbolos:
Incremento: ++
Decremento: --
O comportamento deste operador depende da posio
relativa ao operando
uExemplos:
y=1; x=0; z=0;
x = y++; //x 1 e y 2
z = ++x; //z 2 e x 2
c = 10;
c++; //c 11
Fred (C) 2003 Java: Sintaxe 33
Operadores relacionais
uSmbolos:
Maior que, maior ou igual a: >, >=
Menor que, menor ou igual a: <, <=
Igual a: ==
Diferente de: !=
uExemplos:
if ( c == 10 ) ...
return x != null;
Fred (C) 2003 Java: Sintaxe 34
Operadores lgicos ou booleanos
uSmbolos:
AND: &&(curto circuito) ou &
OR: || (curto circuito) ou |
NOT: !
XOR: ^
uExemplos:
(c != 0) && (a > (x/c)) //ok
(c != 0) & (a > (x/c)) //erro se c==0
!(a > b)
Fred (C) 2003 Java: Sintaxe 35
Operadores de atribuio
uSmbolos:
Aritmticos+atribuio: +=, -=, *-, /=e %=
Equivalem a uma soma entre o operando da direita e o
operando da esquerda seguida por uma atribuio
Forma geral: var op=valor var =var op valor
uExemplos:
c += 5; //c = c + 5
a -= b; //a = a b
f %= (c+a); //f = f % (c+a)
e += 1; // e++ ou e = e + 1
Fred (C) 2003 Java: Sintaxe 36
Operador condicional
uSmbolo:
Operador ternrio: ?:
Equivale a um comando de deciso que resulta num
valor
Sintaxe: expr_booleana? expressaoV: expressoF
uExemplos:
j = (a>b)?a:b;
a = (a != null) ? a : "<vazio>";
v = r>0 ? 10 : 10.5; //erro!
a = (x<y)&&(z<y) ? y : ((x<z) ? z : x);
7
Fred (C) 2003 Java: Sintaxe 37
Operador instanceof
uSintaxe:
(objetoou array) instanceof nome_da_classe
Retorna true se o objeto for instncia da classe
uExemplos:
"string" instanceof String //true
"" instanceof Object //true (H)
null instanceof Object //false
Fred (C) 2003 Java: Sintaxe 38
Operador new
uSintaxe:
new construtor_da_classe
Cria um objeto da classe especificada no construtor
uExemplos:
c = new Cliente("Bart", "Springfield");
linguagem = new String("Java");
venda.adicioneProduto(new Produto());
faixa = new int[] {1,2,3,4,5};
Fred (C) 2003 Java: Sintaxe 39
Operadores
u(P)recedncia e (A)ssociatividade
E
E
E
E
D
D
E
A
< <= > >= instanceof 9
<< >> <<< 10
+ - +(concatenao de strings) 11
* / % 12
new(tipo ) 13
+ - ! 14
. [] (params ) ++ -- 15
Operador P
Fred (C) 2003 Java: Sintaxe 40
Operadores
p ==p p !=p r ==r r !=r (p=primitivo, r=referncia) E 8
D
D
E
E
E
E
E
A
= *= /= %= += -= <<= >>= >>>= &= ^= |= 1
?: 2
|| 3
&& 4
| (bitwise) | (lgico) 5
^(bitwise) ^(lgico) 6
&(bitwise) &(lgico) 7
Operador P
Fred (C) 2003 Java: Sintaxe 41
Estrutura de uma aplicao
uElementos da linguagem, em ordem crescente de
complexidade:
Caracteres
Tipos de dados, valores literais, identificadores
Operadores e expresses
Comandos
Mtodos
Classes
Pacotes
C
O
M
P
L
E
X
I
D
A
D
E
Fred (C) 2003 Java: Sintaxe 42
Comandos
uEstruturas de deciso:
if-else e switch-case
uEstruturas de repetio:
for, while e do-while
uTratamento de excees:
throw e try-catch-finally
uDesvio de fluxo:
break, continue e return
8
Fred (C) 2003 Java: Sintaxe 43
Comando simples x bloco de comandos
uUm comando em Java pode ser um comando
simples ou um bloco de comandos
uUm comando simplespode ser: uma expresso,
um dos comandos anteriores ou uma ativao de
mtodo;
uUm bloco de comandos um conjunto de um ou
mais comandos simples delimitados por "{" e "}" e
separados entre si por ";".
Fred (C) 2003 Java: Sintaxe 44
Comando if-else
uSintaxe: if( expr_booleana )
comando simples ou bloco;
else
comando simples ou bloco;
uExemplo:
if (a>b)
maior = a;
else
maior = b;
if (n != 0){
c += n;
n = 0;
} else
c++;
Fred (C) 2003 Java: Sintaxe 45
Comando switch-case
uSintaxe: switch(var_inteira){
[caseval: comando ou bloco; break;]
1-n
[default: comando ou bloco; break;]
0-1
}
uExemplo:
switch (mes) {
case 1: nome = "Janeiro"; break;
case 2: nome = "Fevereiro"; break;
case 3: nome = "Maro"; break;
case 4: nome = "Abril"; break;
default: nome = "Ms invlido"; break;
}
(char | byte | short | int)
Fred (C) 2003 Java: Sintaxe 46
Comando for
uSintaxe: for(inic; teste; inc)
comando simplesou bloco;
uOnde:
inic: inicializao da varivel contadora. A varivel
tambm pode ser declarada aqui.
teste: expresso booleana que determina a parada ou
continuao do lao
inc: incremento da varivel contadora
Interessantetodas as trs clusulas so opcionais!
Fred (C) 2003 Java: Sintaxe 47
Comando for
uExemplos:
int i;
for (i=0 ; i<10 ; i++)
x += 5;
//outra forma
for (int i=0 ; i<10 ; i++)
x += a[i];
//lao infinito
for( ;; ) {
if (x != null) break;
else { ... }
}
is pode ser usada no
corpo do lao for
Fred (C) 2003 Java: Sintaxe 48
Comando for
uExemplos:
//mais de uma varivel declaradas
for (int i=0, j=10 ; i<10 ; i++, j--)
soma += i*j;
//no precisa ser uma contagem
for (Node n = cabeca ; n!=null ; n=n.next())
System.out.println(n);
//lao vazio (e possvel erro de compilao)
for (int i=0 ; i<10 ; i++);
soma += i;
;
9
Fred (C) 2003 Java: Sintaxe 49
Comando while
uSintaxe: while(expresso)
comando ou bloco;
uOnde:
expresso: expresso que retorne um booleano
Se o valor for true, o corpo do lao executado
Se for false, o lao encerrado
Pode ser anlogo a um for, desde que se acrescente
uma operao de inicializao antes do comando
Fred (C) 2003 Java: Sintaxe 50
Comando while
uExemplos:
int c=0;
while (c < 10) {
System.out.println(c);
c++;
}
//equivale a
for (int c=0; c<10 ;c++)
System.out.println(c);
is pode ser usada no
corpo do lao for
Fred (C) 2003 Java: Sintaxe 51
Comando do-while
uSintaxe: do
comandoou bloco;
while(expresso);
uOnde:
expresso: expresso que retorne um booleano
O lao do-while executado pelo menos uma vez
S pra se a expresso for false (cuidado para no
confundi-lo como repeat-until do Pascal)
Fred (C) 2003 Java: Sintaxe 52
Comando do-while
uExemplos:
//equivalente ao lao while do exemplo
int c=0;
do {
System.out.println(c);
c++;
} while (c < 10);
Fred (C) 2003 Java: Sintaxe 53
Comando throw
uSintaxe: throwexceo;
uObservaes:
Lanar uma exceo que indique um erro ou condio
que impossibilite o prosseguimento da execuo
O mtodo que possui este comando deve indicar na
sua assinatura que pode lanar tal exceo, isto feito
com a clusula throws
Uma exceo um objeto cuja classe herda de
Throwable
Fred (C) 2003 Java: Sintaxe 54
Comando throw
uExemplo:
/** Mtodo que adiciona um produto venda
atualmente aberta de um caixa */
public void adicioneProduto(Produto item)
throws VendaNaoAbertaException {
//h venda aberta no caixa?
if (vendaAtual == null)
throw new VendaNaoAbertaException(this);
vendaAtual.insereItem(item);
}
10
Fred (C) 2003 Java: Sintaxe 55
Comando try-catch-finally
uSintaxe: try {
[comando;]
1-n
} catch(Exceo e1) {
[comando;]
1-n
} catch(OutraExceoe2) {
[comando;]
1-n
} finally {
[comando;]
1-n
}
zero ou mais
um ou zero
Fred (C) 2003 Java: Sintaxe 56
Comando try-catch-finally
uMecanismo de tratamento de excees de Java
uA clusula trydefine o trecho de cdigo protegido
uA clusula catch(0 ou mais) trata um determinado
tipo de exceo que possa ocorrer no try
Os comandos s sero executados se a exceo ocorrer
Apenas um catch, dentre todos, executado
uA clusula finally opcional e sempre executada
uO uso de chaves faz parte do comando e no
opcional
Fred (C) 2003 Java: Sintaxe 57
Comando try-catch-finally
uExemplo:
public static void main(String[] args) {
Caixa c = new Caixa();
Produto p;
try {
p = = new Produto("Celular", 600);
c.adicioneProduto(p);
} catch (VendaNaoAbertaException e) {
//trata erro aqui...
}
}
Fred (C) 2003 Java: Sintaxe 58
Comando break
uSintaxe: break;
uObjetivo:
Faz a execuo saltar para o final de um dos
comandos: while, do-while, for ou switch-
case
No comando switch-case seu uso necessrio
para evitar que a execuo de uma clusula case
continue na seguinte
Fred (C) 2003 Java: Sintaxe 59
Comando break
uExemplo:
...
for (int i=0; i<dados.length ;i++) {
if (dados[i] == procurado) {
posicao = i;
break;
}
} //a execuo continua daqui
...
Fred (C) 2003 Java: Sintaxe 60
Comando continue
uSintaxe: continue;
uObjetivo:
Interrompe a iterao atual do lao e inicia a prxima
S pode ser usado dentro de laos while, do-
while e for
while: volta para o incio do lao e testa a condio de
parada para decidir se entra no lao ou no
do-while: vai para o final do lao, onde a condio de
parada testada para decidir se entra no lao ou no
for: volta para o incio, executa o incremento e depois o
teste
11
Fred (C) 2003 Java: Sintaxe 61
Comando continue
uExemplo:
...
for (int i=0; i<dados.length ;i++) {
if (dados[i] == VAZIO)
continue;
processe(dados[i]);
}
...
Fred (C) 2003 Java: Sintaxe 62
Comando return
uSintaxe: return; ou
returnexpresso;
uObjetivo:
Pra a execuo do mtodo corrente
Mtodos com tipo de retornovoid pedem a primeira
sintaxe do return
Mtodos que retornam dados pedem a segunda
Fred (C) 2003 Java: Sintaxe 63
Comando return
uExemplos:
String informeNome() {
return this.nome;
}
public void insereProduto(Produto item) {
if (item == null)
return;
itens.add(item);
}
Fred (C) 2003 Java: Sintaxe 64
Mtodos
uColeo de comandos Java encapsulados por um
nome:
Em linguagens imperativas: funes, subrotinas e
procedimentos
uMtodos podem possuir zero ou mais parmetros e
podem conter declaraes locais de variveis
uA invocao de um mtodo uma expresso Java
Exceo: mtodos com retorno void no so
expresses
Fred (C) 2003 Java: Sintaxe 65
Mtodos
uAssinatura de um mtodo:
Nome do mtodo
Tipo e nome de cada parmetro
Tipo do valor retornado
Lista de excees
Modificadores
uSintaticamente:
modi f t i po nome (par ams)[throws excees]{
cor po_do_mt odo
}
Fred (C) 2003 Java: Sintaxe 66
Mtodos
uNome do mtodo: mesmas regras dos
identificadores de variveis
uTipo de retorno: um tipo primitivo, um tipo
referencivel, um arrayou void.
uParmetros so separados por vrgulas e, quando
no existirem, o nome do mtodo vem seguido por
'()'
uA clusula throws informa as excees (erros)
que o mtodo pode lanar.
12
Fred (C) 2003 Java: Sintaxe 67
Mtodos
uExemplos de assinaturas de mtodos:
public static void main(String[] args) {...}
public final int indexOf(Object e, int s) {...}
doubledistanciaDaOrigem() {...}
static double raiz(doublee)
throws IllegalArgumentException {...}
protected abstract String readText(File f)
throws FileNotFoundException,
UnsupportedEncondingException{...}
Fred (C) 2003 Java: Sintaxe 68
Pacotes
uColeo de classes e interfaces relacionadas com
um espao de proteo e de nomes comuns.
Identificar classes com caractersticas comuns.
Facilidade para encontrar classes desejadas.
Nomes de classes num pacote no entram em conflito
com nomes de classes de outros pacotes.
Facilitar o acesso entre classes no mesmo pacote.
Fred (C) 2003 Java: Sintaxe 69
Pacotes
uPacotes em Java possuem nomes compostos
separados por "." (ponto)
Nomes de pacotes da plataforma comeam por java,
javax ou sun
uExemplos de pacotes:
java.lang: pacote com vrias classes fundamentais da
linguagem Java, tais como, String, Math, etc.
java.util: pacote com classes utilitrias e estruturas de
dados
Fred (C) 2003 Java: Sintaxe 70
Importao de pacotes e classes
uDentro de um pacote pacote1 , uma classe A
pode se referir a uma outra classe B apenas por
seu nome simples
uClasses de outro pacote pacote2 devem
adicionar o nome do pacote pacote1 para
utilizarem as classes A e B
Exemplo: pacote1.A a = new pacote1.A();
Exemplo: java.io.File f;
f = new java.io.File("abc.txt");
Fred (C) 2003 Java: Sintaxe 71
Importao de pacotes e classes
uA diretiva import dispensa o uso do nome
qualificado de uma classe de outro pacote
uDeve ser colocada depois da diretiva package
uPode ser usada mais de uma vez
uDisponvel em duas formas:
Importao de uma classe de um pacote
Importao de todas as classes de um pacote
O pacote java.lang sempre importado automaticamente!
Fred (C) 2003 Java: Sintaxe 72
Importao de pacotes e classes
uExemplos:
import java.util.ArrayList;
import java.util.Iterator;
import java.io.*; //importa tudo
import java.lang.*; //dispensvel
public class Cliente {
...
}
13
Fred (C) 2003 Java: Sintaxe 73
Definio de pacotes
uA diretiva package define o pacote ao qual a
classe pertence
uDeve ser a primeira palavra reservada Java a
aparecer em um arquivo
uSintaxe: package nome_do_pacote;
uPacotes devem ser rotulados com o nome de
domnio invertido, para garantir unicidade global
uExemplo: package br.nti.ufpb.contacad;
Fred (C) 2003 Java: Sintaxe 74
Definio de pacotes
uCada arquivo fonte deve estar num diretrio que
reflita o nome do pacote
package v3;
public class Cliente {
...
}
v3
Cliente.java
package v3;
public class Produto {
...
}
v3.Produto
v3\Produto.java
Produto. java
Fred (C) 2003 Java: Sintaxe 75
Definio de pacotes
uOs bytecodestambm exigem a mesma hierarquia:
v3
Compilador Java package v3;
public class Cliente
{
...
}
package v3;
public class Produto
{
...
}
Cliente.class
Produto.class
Fred (C) 2003 Java: Sintaxe 76
Definio de pacotes
uO diretrio base do pacote pode estar em qualquer
ponto do sistema de arquivos.
uExemplo:
package v3;
public class Produto {
...
}
loja
Produto. java
v3
C:\
pacote
Fred (C) 2003 Java: Sintaxe 77
Definio de pacotes
uSugesto para organizao do cdigo:
v3 v3
fontes classes
loja
Cliente.class
Produto.class
Cliente.java
Produto.java
C:\
Fred (C) 2003 Java: Sintaxe 78
Definio de pacotes
uO compilador e o interpretador devem estar
informados onde encontrar os arquivos fontes e de
classes.
uDefinindo um CLASSPATH:
Conjunto de diretrios que contm pacotes onde o
compilador e o interpretador devem procurar por
arquivos fontes e bytecodes
14
Fred (C) 2003 Java: Sintaxe 79
Definio de pacotes
uApenas diretrios que contm diretrios base de
pacotes devem ser listados.
uExemplo:
c:\loja\fontes deve estar no classpath
c:\loja\fontes\v3 no deve!
uDefinindo um classpath:
SETCLASSPATH=c:\loja\fontes;c:\loja\classes
Inserido no arquivo AUTOEXEC.BAT
Diretiva -classpathdo compilador/interpretador
Fred (C) 2003 Java: Sintaxe 80
Definio de pacotes
uExemplos:
Compilando o cdigo em linha de comando:
Executando uma classe:
C:\> javac classpath c:\loja\fontes
Cliente.java
C:\> _
C:\> java classpathc:\loja\classes
Cliente
C:\> _
Fred (C) 2003 Java: Sintaxe 81
Estrutura de um cdigo fonte Java
uArquivo: menor unidade compilvel de Java
uEstrutura:
Uma diretiva package (opcional)
Zero ou mais diretivas import
Uma ou mais definies de classe
uTodo comando Java deve estar contido dentro dos
mtodosdas classes
uTodo mtodo deve aparecer dentro de alguma
classe.
Fred (C) 2003 Java: Sintaxe 82
Estrutura de um cdigo fonte Java
uTodo arquivoJava deve conter no mximo uma
classe com acesso public.
uO nome do arquivo deve ser o mesmo de sua
classe public com a extenso .java.
u boa prtica de programao declarar apenas
uma classe por arquivo, mesmo quando estas
pertencerem a um mesmo pacote.
Fred (C) 2003 Java: Sintaxe 83
Estrutura de um cdigo fonte Java
CLASSE
MTODO ARQUIVO PACOTE
COMANDO
Fred (C) 2003 Java: Sintaxe 84
Estrutura de um cdigo fonte Java
uSintaticamente:
[package NomeDoPacot e]
{[import * ou Cl asse]}
public class NomeDaCl asse
[extends Super cl asse]{
Cor po da cl asse
}
class Out r aCl asse
[extends Super cl asse]{
Cor po da cl asse
}
15
Fred (C) 2003 Java: Sintaxe 85
Estrutura de um cdigo fonte Java
uClasses de um mesmo pacote:
package figuras;
class Circulo {
cor po da
cl asse. . .
}
package figuras;
class Retangulo {
cor po da
cl asse. . .
}
package figuras;
class Poligono {
cor po da
cl asse. . .
}
Circulo.java Retangulo.java Poligono.java
Fred (C) 2003 Java: Sintaxe 86
Arranjos e Strings
Fred (C) 2003 Java: Sintaxe 87
Arranjos
uArranjos so objetos em Java!
uArranjos devem ser declarados e depois
instanciados.
uExemplo:
int[] inteiros; //declarao
inteiros = new int[20]; //instanciao
Ou:
int[] inteiros = new int[20]; //2 em 1
Fred (C) 2003 Java: Sintaxe 88
Arranjos
uSintaxe geral:
tipo[ ] referncia=new tipo[tamanho]
uO tipo base de um arranjo pode ser primitivo ou de
referncia (objetos)
uUma vez criados, no podemmudar de tamanho
uSo indexados a partir do ndice 0 (zero)
uPossuem uma propriedade pblica length que
contm o tamanho do arranjo
Fred (C) 2003 Java: Sintaxe 89
Arranjos
uTipo primitivo:
int[] arrayDeInteiros = new int[10];
int arrayDeInteiros[] = new int[10];
uTipo referncia:
String[][] nomes = new String[2][3];
Produto[] vendas = new Produto[3];
Object coisas[] = new Object[10];
uA declarao acima s cria os arranjos, os objetos
devem ser criados depois!
Fred (C) 2003 Java: Sintaxe 90
Arranjos
vendas
= null
Cada caixinha uma
referncia para um
objeto Produto a ser
criado!
16
Fred (C) 2003 Java: Sintaxe 91
Arranjos
uArranjos literais:
Na declarao de uma referncia:
int[] inteiros = {1, 2, 3, 4, 5};
Na passagem de um valor literal:
String r = abrirDialogo("Deseja sair?",
new String[] {"Sim", "No"});
uA inicializao feita em tempo de execuo!
Fred (C) 2003 Java: Sintaxe 92
Arranjos
uPovoando um arranjo de referncias:
Produto[] vendas = new Produto[3];
vendas[0] = new Produto("Celular", 600);
vendas[1] = new Produto("DVD", 700);
vendas[2] = new Produto("Mesa", 100);
System.out.println(vendas.length);
uCada posio do arranjo uma referncia para um
objeto da classe Produto
Fred (C) 2003 Java: Sintaxe 93
Arranjos
vendas
"Celular"
600.0
"DVD"
700.0
"Mesa"
100.0
Fred (C) 2003 Java: Sintaxe 94
Strings
uStrings tambm so objetos em Java.
uDevem ser declarados e instanciados.
uExemplos:
String linguagem; //declara...
linguagem = new String(Java); //...instancia
linguagem = Java; //mais prtico!
uConcatenao: Java + a melhor
2+2= + 4
Produto = + p //p um Produto
Fred (C) 2003 Java: Sintaxe 95
Strings
uInterface da classe String
char charAt(int pos)
int compareTo(String s)
int compareToIgnoreCase(String s)
boolean endsWith(String s)
boolean equals(String s)
boolean equalsIgnoreCase(String s)
int length()
Stringsubstring(int ini)
Stringsubstring(int ini, int fim)
Fred (C) 2003 Java: Sintaxe 96
Strings
String s = new String("Java a melhor");
s.charAt(3); // 'a'
s.compareTo("Java "); // 9
"Java ".compareTo(s); // 9
s.compareToIgnoreCase("java a melhor"); // 0
s.equalsIgnoreCase("jAvA a meLhoR"); // true
s.length(); // 15
"Isto um string".length(); // 16
s.substring(7); // "a melhor"
s.substring(0,4); // "Java"
17
Fred (C) 2003 Java: Sintaxe 97
Strings
uInterface da classe String
int indexOf(String s)
int indexOf(String s, int ini)
int indexOf(int ch)
int indexOf(int ch, int ini)
int lastIndexOf(String s)
int lastIndexOf(String s, int ini)
int lastIndexOf(int ch)
int lastIndexOf(int ch, int ini)
Fred (C) 2003 Java: Sintaxe 98
Strings
String s = new String("Java a melhor");
s.indexOf("a "); // 3
s.indexOf("a ", 4); // 7
s.indexOf('e'); // 10
s.indexOf('', 2); // 5
s.lastIndexOf("a "); // 7
s.lastIndexOf("a ", 6); // 3
"Nabucodonosor".lastIndexOf('o'); // 11
"Nabucodonosor".lastIndexOf('o', 7); // 7
Fred (C) 2003 Java: Sintaxe 99
Strings
uInterface da classe String
String toLowerCase()
String toUpperCase()
String trim()
String replace(char c1, char c2)
boolean startsWith(String s)
boolean startsWith(String s, int desloc)
char[ ] toCharArray()
boolean regionMatches(intd1, Strings, intd2, inttam)
Fred (C) 2003 Java: Sintaxe 100
Strings
String s = new String("Java a melhor");
s.toLowerCase(); // "java a melhor"
s.toUpperCase(); // "JAVA A MELHOR"
" Joao Pessoa ".trim(); // "Joao Pessoa"
s.replace('a','o'); // "Jovo o melhor"
s.startsWith("java"); // false
s.startsWith("Java", 2); // false
s.toCharArray(); // {'J'','a','v',..}
s.regionMatches(9,"melhor",0,6); // true
Fred (C) 2003 Java: Sintaxe 101
String Exemplo mais completo
uConstruir uma classe que facilite a manipulao de
nomes de arquivos no Windows/DOS ou Unix
A classe deve guardar um nome completo de arquivo e
permitir o acesso a cada uma de suas partes:
nome
caminho
extenso do arquivo
Fred (C) 2003 Java: Sintaxe 102
String Exemplo mais completo
uEsquematicamente:
nomeCompleto
separador
n
o
m
e
() ?
e
x
t
e
n
s

o
(
)
?
c
a
m
in
h
o
(
)
?
n
o
m
e
!
18
Fred (C) 2003 Java: Sintaxe 103
String Exemplo mais completo
public class NomeArquivo {
private String nomeCompleto;
private char separador;
// construtor da classe
public NomeArquivo(String nome, char sep) {
nomeCompleto = nome;
separador = sep;
}
// mtodo para retornar a extenso do arquivo
public String extensao () {
int ponto = nomeCompleto.lastIndexOf(.);
return nomeCompleto.substring(ponto + 1);
}
Fred (C) 2003 Java: Sintaxe 104
String Exemplo mais completo
//Retorna o nome do arquivo
public String nome() {
int ponto = nomeCompleto.lastIndexOf(.);
int sep = nomeCompleto.lastIndexOf(separador);
return nomeCompleto.substring(sep + 1, ponto);
}
// Retorna o caminho (path) do arquivo
public String caminho() {
int sep = nomeCompleto.lastIndexOf(separador);
return nomeCompleto.substring(0, sep);
}
} // fim da classe NomeArquivo
Fred (C) 2003 Java: Sintaxe 105
String Exemplo mais completo
public class AplicacaoNomes {
public static void main(String[] args) {
NomeArquivo arq;
arq = new NomeArquivo("c:\\temp\\teste.doc", '\\');
System.out.println("Extensao: " + arq.extensao());
System.out.println("Caminho:" + arq.caminho());
System.out.println("Nome:" + arq.nome());
}
} // fim da classe AplicacaoNomes
Fred (C) 2003 Java: Sintaxe 106
Operaes de entrada e sada
Fred (C) 2003 Java: Sintaxe 107
Entrada e sada
uEncontram-se na classe System (java.lang)
System.in e System.out
uin uma varivel de classe do tipo InputStream
Ela referencia um objeto InputStream que representa
a entrada padro do sistema
uout uma varivel de classe do tipo PrintStream
Ela referencia um objeto PrintStream que representa
a sada padro do sistema
Fred (C) 2003 Java: Sintaxe 108
Entrada e sada
in
out
System
um objeto PrintStream um objeto InputStream
19
Fred (C) 2003 Java: Sintaxe 109
Entrada e sada
uLendo da entrada padro:
System.in.read()
uEscrevendo na sada padro:
System.out.println(...)
uAmbos so mtodos enviados para os objetos
referenciados por ine out. As classes
InputStream e PrintStream
implementam estes mtodos.
Fred (C) 2003 Java: Sintaxe 110
Entrada e sada
System.in read() System.out println("...")
in
out
System
Fred (C) 2003 Java: Sintaxe 111
Entrada e sada
uComo Java no foi projetada para produzir
aplicaes com interfaces baseadas em texto, a
entrada (principalmente) e sada de dados
muito pouco prtica (para no dizer inexistente!)
uUtilizaremos uma classe no padrochamada
EasyIn para facilitar a entrada de dados das
primeiras aplicaes
Fred (C) 2003 Java: Sintaxe 112
Entrada e sada
uInterface da classe EasyIn
boolean readBoolean()
byte readByte()
short readShort()
int readInt()
boolean readLong()
float readFloat()
double readDouble()
char readChar()
String readString()
Fred (C) 2003 Java: Sintaxe 113
Exemplo
uExemplo de uso de EasyIn:
public static void main(String args[]){
NomeArquivo meuArquivo;
EasyIn in = new EasyIn();
PrintStream out = System.out;
String nome;
char sep;
out.print("Forneca um nome de arquivo completo:");
nome = in.readString();
out.print("Forneca o separador utilizado:");
sep = in. readChar();
nomeArquivo = new NomeArquivo(nome, sep);
}
Fred (C) 2003 Java: Sintaxe 114
Classes da API de Java
ujava.lang.StringBuffer
Strings que podem ser alterados dinamicamente
(mais eficientes que String)
uAlguns mtodos
StringBuffer append(tipo dado)
StringBuffer insert(int por, tipodado)
String toString()
void setCharAt(int pos, char c)
20
Fred (C) 2003 Java: Sintaxe 115
Classes da API de Java
ujava.util.Calendar
Guarda e manipula datas e horas
uAlguns mtodos
Calendar getInstance()
boolean after(Object data)
boolean before(Object data)
int add(int campo, int qtde)
void get(int campo)
void set(int campo, int valor)
Fred (C) 2003 Java: Sintaxe 116
Classes da API de Java
ujava.util.Calendar
Guarda e manipula datas e horas
uConstantes (para usar em campo)
Calendar.DAY_OF_MONTH
Calendar.DAY_OF_WEEK
Calendar.HOUR
Calendar.MINUTE
Calendar.MONTH
etc. (veja API da classe Calendar)
Fred (C) 2003 Java: Sintaxe 117
Calendar
uExemplo
import java.util.Calendar;
public class UsandoCalendar {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance(); //data atual
cal.add(Calendar.DAY_OF_WEEK, 2);
System.out.println("Dia da semana: " +
cal.get(Calendar.DAY_OF_WEEK));
System.out.println("Dia do mes: " +
cal.get(Calendar.DAY_OF_MONTH));
System.out.println("Hora: " +
cal.get(Calendar.HOUR));
}
}
Fred (C) 2003 Java: Sintaxe 118
Classes encapsuladoras
uClasses encapsuladoras
Byte, Integer, Long, Float, Double e Boolean
Pacote java.lang
uPrincipais utilidades:
Encapsular um valor primitivo na forma de um objeto
Utilizao de tipos primitivos em escopos exclusivos de
tipos de referncia
Converses: String tipos primitivos
Fred (C) 2003 Java: Sintaxe 119
Classes empacotadoras
uUtilizao de tipos primitivos em escopos
exclusivos de tipos de referncia
Object[] coisas = new Object[3];
coisas[0] = new NomeArquivo("teste.doc", '\\');
coisas[1] = new String("java");
coisas[2] = 3;
NOPODE!!! 3umliteral do tipo primitivoint
Os elementos do arranjo s podem ser objetos da
classe Object ou de quaisquer subclasses desta.
Fred (C) 2003 Java: Sintaxe 120
Classes empacotadoras
uUtilizao de tipos primitivos em escopos
exclusivos de tipos de referncia
Object[] coisas = new Object[3];
coisas[0] = new NomeArquivo("teste.doc", '\\');
coisas[1] = new String("java");
coisas[2] = new Integer(3); //Ok!
3 3
Literal primitivo
ANTES DEPOIS
Objeto de Integer
21
Fred (C) 2003 Java: Sintaxe 121
Classes empacotadoras
uConverses tipos primitivos String
De Para String
boolean String.valueOf(boolean)
int String.valueOf(int), Integer.toString(int)
long String.valueOf(long), Long.toString(long)
float String.valueOf(float), Float.toString(float)
double String.valueOf(double),Double.toString(double)
uConverses Stringtipos primitivos
De String para:
boolean new Boolean(String s).booleanValue()
int Integer.parseInt(String s, int base)
long Long.parseLong(String s, int base)
float Float.parseFloat(String s)
double Double.parseDouble(String s)
GERAM
UMA
EXCEO
Fred (C) 2003 Java: Sintaxe 122
Classes empacotadoras
uClasse Integer
Constantes
staticfinal int MIN_VALUE, MAX_VALUE
Principais mtodos
Integer(String s) throws NumberFormatException
static int parseInt(String s) idem
staticString toBinaryString(int i)
int intValue()
long longValue()
float floatValue()
Fred (C) 2003 Java: Sintaxe 123
Classes empacotadoras
uClasse Boolean
Constantes
staticfinal Boolean FALSE;
staticfinal Boolean TRUE;
Principais mtodos
Boolean (boolean b)
Boolean(String s)
boolean booleanValue()
static Boolean valueOf(String s)
Fred (C) 2003 Java: Sintaxe 124
Classes empacotadoras
uClasse Float
Constantes
static final float MIN_VALUE, MAX_VALUE
static final float NEGATIVE_INFINITY
Principais mtodos
Float(String s) throws NumberFormatException
Float(float f)
static float parseFloat(String s) throws NumberFormatException
static Float valueOf(String s) throws NumberFormatException
float floatValue()
static String toString(float f)
Fred (C) 2003 Java: Sintaxe 125
Classes empacotadoras
uClasse Double
Constantes
static final double MIN_VALUE, MAX_VALUE
static final double NEGATIVE_INFINITY
Principais mtodos
Double(String s) throws NumberFormatException
Double(double f)
static double parseDouble(String s) throws NumberFormatException
static Double valueOf(String s) throws NumberFormatException
double doubleValue()
static String toString(double f)
Fred (C) 2003 Java: Sintaxe 126
Classes empacotadoras
uExemplos:
class Conversao {
public static void main(String[] args) {
String numero;
int inteiro;
numero = new EasyIn().readString();
try {
inteiro = Integer.parseInt(numero, 10);
} catch (NumberFormatException nfe) {
inteiro = 0;
}
for(int i=0; i<inteiro; i++) { //processa }
}
}
22
Fred (C) 2003 Java: Sintaxe 127
Bibliografia
uArnold, Ken e Gosling, James. Programando em
J ava. Makron Books. 1997.
uCampione, Mary e Walrath, Kathy. TheJ ava Tutorial -
Object Oriented Programming for the Internet. Addyson
Wesley. 1996.
uDeitel, H. M. e Deitel, P. J. J ava - HowTo Program.
PrenticeHall. 1997.
uFlanagan, David. J ava in a Nutshell. OReilly. 1999.
uRamon, Fbio. J ava Guia de Consulta Rpida.
Novatec 1999.

Você também pode gostar