Manual de Sintaxe
da Linguagem Java 2
CONTEÚDO
A linguagem Java é descrita por sua sintaxe e sua semântica. A sintaxe define a estrutura e a aparência da
escrita do código Java. A semântica define o que significa cada parte do código e como irá comportar-se quan-
do for executado.
Os componentes básicos da sintaxe são palavras reservadas (keywords) e componentes do léxico (tokens).
Uma palavra reservada é uma palavra ou identificador que tem um significado específico na linguagem. As pa-
lavras reservadas só podem ser utilizadas no mundo onde está definida a linguagem. Os componentes do léxico
(token) incluem cada palavra, símbolo ou grupo de símbolos que aparecem no código-fonte do programa.
Uma gramática é utilizada para agregar todos os componentes da sintaxe e definir a estrutura de unidades
sintaticamente correta do código Java. A gramática Java especifica a ordem precisa onde podem ser escritos
as palavras reservadas e os símbolos, e é utilizada pelo compilador Java para assegurar que o programador faz as
coisas corretas. Qualquer código que não esteja escrito de forma correta emitirá mensagens de erro e não irá
construir um programa executável.
Este apêndice descreve as regras básicas de sintaxe de Java que cumprem as diferentes versões existentes:
JDK1.1, 1.2, 1.3 e 1.4, com o compilador Java 2.0. Grande parte da sintaxe de Java é baseada em C e/ou C++.
Fundamentos de programação – Algoritmos, estruturas de dados e objetos
Ferramentas Uso
F.2 COMENTÁRIOS
Os comentários permitem acrescentar ao código-fonte notas ou comentários de texto que são ignorados pelo
compilador. Os comentários vêm em três formatos:
Certas palavras estão reservadas para uso interno por Java e não podem ser utilizadas como nomes de variáveis:
As palavras reservadas const e goto são reservadas mas não são utilizadas.
Nota
Além dessas palavras reservadas, Java reserva false, null e true como valores definidos na
linguagem.
F.4 IDENTIFICADORES
Um identificador é o nome de variáveis, métodos, classes e interfaces. Um identificador é uma seqüência
ilimitada de caracteres alfabéticos ou dígitos (unicode) que começam com um caractere alfabético. Os nomes
podem incluir o caractere sublinhado (_) e o cifrão ($).
Nomes válidos
Uma prática freqüente é criar um identificador pela concatenação de duas ou mais palavras ligadas pelo
caractere sublinhado ou utilizando letras maiúsculas nas primeiras letras das palavras.
Regra
Os identificadores que começam com uma letra maiúscula são reservados somente para nomes de
classe ou interfaces.
Os identificadores que estejam todos em maiúsculas representam constantes.
Os nomes das variáveis e dos métodos começam com letras minúsculas.
F.5.1 Literais
Os literais permitem valores de tipos primitivos, os tipos string ou null são escritos diretamente como um
texto de programa.
Literais inteiros
Valores decimais de tipo int (32 bits).
Valores hexadecimais de tipo int ( ) precedidos por um 0 ou DX (os dígitos hexadecimais podem ser
representados por a-f ou A-F).
Valores octais de tipo int estão precedidos por um 0 à esquerda seguido por dígitos no intervalo 0-7.
Regra
Os literais em ponto flutuante em Java são por default double precisão. Para especificar um li-
teral float, deve ser acrescentada uma consoante F ou f. Podemos especificar explicitamente
um literal de tipo double acrescentando D ou d.
Literais boolean
Existem dois valores lógicos que podem ter um valor lógico ou boolean: true (verdadeiro) e false (falso).
Literais caractere
Um literal caractere representa somente um caractere entre aspas simples.
Literais de cadeia
Os literais de cadeia são especificados fechando-se uma seqüência de caracteres entre aspas.
“Olá Carchelejo”
“cinco/nlinhas”
“Isto é uma cadeia”,“Olá mundo/n”
F.6 VARIÁVEIS
As variáveis são unidades básicas de armazenamento em Java. Uma variável é definida pela combinação de
um identificador, um tipo e um inicializador opcional. Além disso, as variáveis têm um escopo que define sua
visibilidade e uma duração.
1. Variáveis de tipo primitivo que contêm diretamente uma representação de um valor de um tipo primitivo.
2. Variáveis de tipo referência que contêm uma referência a um objeto, quando um tipo de referência
recebe o valor null, significa que não se refere a um objeto real (referência nula).
Fundamentos de programação – Algoritmos, estruturas de dados e objetos
byte (byte) 0
short (short) 0
int 0
long 01
float 0.0f
double 0.0d
char ‘/ u000’(caractere nulo)
boolean false
tipos referência null
1. int i=100;
char c=‘d’;
float f=45.325F
2. int i;
{i=100;}
3. Atribuição dentro do corpo de um construtor
int a=10,b,c=5;
{
int i=10;
...
}
Manual de sintaxe da linguagem Java 2mm
Ou por uma atribuição feita na variável antes de ser utilizada em qualquer outra expressão.
{
int i;
... // nenhuma sentença pode utilizar aqui i
i=10; // não se atribui 10 a i
... // i pode ser utilizado aqui
}
double a = 6.0
float b;
b= (float) a;
a variável double se converte em float e é atribuída à variável b
Caracteres especiais
Caracteres especiais de difícil representação.
Sintaxes Significado
\‘ Aspa simples
\“ Aspas duplas
\\ Diagonal
\b Retrocesso
\f Avanço de página
\n Nova linha
\r Retorno de carro
\t Tabulação
\dee Representação octal
\xdd Representação hexadecimal
\udddd Caractere unicode
Fundamentos de programação – Algoritmos, estruturas de dados e objetos
F.7 ARRAYS
Um array é um grupo de variáveis de tipos similares que são conhecidas com um nome comum. Os diferen-
tes elementos contidos em um array são definidos por um índice e são acessados utilizando seu índice; os
índices partem de 0. Os arrays podem ser multidimensionais e, como os objetos da classe, são criados utili-
zando-se a palavra reservada new.
Tipo nome_van[ ];
int dia_mês [ ];0
O operador new serve para alocar memória e criar um array de uma dimensão.
Var_array=new tipo[comprimento];
Dia_mês=new int[12]; //array de 12 inteiros
Dia_mês[1]=28, // array 28 a dia_mês
Sintaxe
Tipo variável nomeArray[ ]=new tipo Variável[logArray];
Tipo Variável[ ] nomeArray=new tipovariável[longArray];
Esta sentença cria um array de n elementos e o inicializa com os valores contidos entre chaves. A sintaxe
completa é:
Exemplo
Int dosD[ ] [ ]new int[4] [5];
NomeArray[índice]
NomeArray[índice]=valor;
por exemplo:
Dados[0]=45;
Cria um objeto array de duas dimensões. Se o número de colunas é deixado em branco, o array pode ter
um número de colunas diferentes no final.
Exemplo
Criar um array bidimensional com 8 filas e um número variável de colunas por fila. A primeira fila é
criada com 20 colunas, e a terceira, com 100 colunas.
class TestArraybidimensional {
public static void main (String arrays[ ]){
int[ ][ ]multD=new int[8];
multD[0]=new int 20];
multD[1]=new int[1000];
}
}
Cria um array bidimensional e inicializa as colunas com os valores contidos entre chaves. Cada conjunto
de chaves representa uma fila de array bidimensional.
Exemplo
Inicializar um array bidimensional de valores inteiros de modo que se visualize o elemento [0][2].
Saída
O comprimento da 1ª fase é 4
F.8 EXPRESSÕES
As expressões são utilizadas para buscar, calcular e atribuir valores. Exceto para a ativação de um método com
um tipo de retorno void, todas as expressões devolvem um valor, permitindo que as expressões se combinem
em mais expressões complexas. As expressões principais trazem ou criam valores e são:
Expressão de campo
Identificador
Expressão principal. Identificador
Pacote. Identificador
Expressão de atribuição
new numbertipo (listaArgumentos)
new numbertipo [expressãoInteira]
F.9 OPERADORES
Os operadores permitem que as expressões se combinem em expressões mais complexas. Java proporciona
uma coleção grande de operadores que podem ser utilizados para manipular dados, incluindo operadores
aritméticos, atribuição, lógicos e moldados. As regras de associação e de prioridade são utilizadas para
determinar como avaliar expressões utilizando operadores.
Manual de sintaxe da linguagem Java 2mm11
Operador Significado
+ Adição
– Subtração
* Multiplicação
/ Divisão
% Módulo
++ Incremento em 1
—— Decremento em 1
Exemplo
int x,y,z;
x=y=z=100;//x,y,z, colocando a 100
Operador Significado
= Atribuição simples
+= Atribuição e adição
-= Atribuição e subtração
*= Atribuição e multiplicação
/= Atribuição e divisão
%= Atribuição e módulo, devolve o resto do valor da expressão da esquerda dividido pelo valor da
expressão da direita
Operador Significado
&
& AND lógico
| OR lógico
^ XOR lógico (OR exclusive)
|| OR curto circuito (condicional)
&& AND curto circuito (condicional)
! NOT unitário lógico
&= Atribuição AND
|= Atribuição OR
^= Atribuição XOR
expressão1 é qualquer expressão que é avaliada em um valor lógico (booleano). Se expressão1 for
verdadeira, então se avalia a expressão2. O resultado da operação ? é o da expressão avaliada. Tanto a ex-
pressão2 como a expressão3 têm de devolver o mesmo tipo de retorno que não pode ser void.
Operador Significado
= = Igual a
! => Não igual a
> Maior que
< Menor que
>= Maior que ou igual a
<= Menor que ou igual a
Manual de sintaxe da linguagem Java 2mm13
Mais alta
( ) [ ]
++ --
+ - ! (tipo) new
* / %
+ -
< <= > >= instância de
= !=
&&
||
?:
= += -= *= /= %=
Mais baixa
Os parênteses elevam a precedência das operações que estão em seu interior. Essa técnica é utilizada para
obter o resultado desejado.
O fluxo de saída padrão permite acessar os métodos básicos de impressão; print ( ) e println ( ), da classe
PrintStream. Ele proporciona uma referência a um objeto de printStream que pode ser acessado por
esses métodos. A variável out é um membro da classe System.
Sintaxe
Exemplo
public class testeImpressão1{
public static void main(String args[ ])}
for (int i=1;i<5,++i){
System.out.print(“ linha número”+i);
}
}
}
F.11 SENTENÇAS
Sentenças de declaração
tipo nomeVariável;
Exemplos
int comprimento;
double e;
Círculo círculo;
Sentenças de atribuição
Uma sentença de atribuição atribui o valor da expressão no lado direito à variável do lado esquerdo.
nome = expressãoLegal;
Exemplo
comprimento= 5 + 7;
i += 5;
Sentenças return
As sentenças return proporcionam uma saída de um método com um valor de retorno não void. As sentenças
de retorno podem não aparecer em um método com um tipo de retorno void. As sentenças return podem
aparecer em qualquer parte de uma estrutura de controle; produzem um retorno imediato do método. O valor
da expressão a seguir do retorno deve coincidir com o tipo de retorno do método.
Manual de sintaxe da linguagem Java 2mm15
Exemplo
public int calcularSubtrair (int x, int y) {
return x–y;
}
Sentenças compostas
As sentenças compostas estão entre chaves { } e são executadas seqüencialmente dentro do bloco.
Exemplo
{
int m = 25; // atribui o valor 25 a m
int n = 30; // atribui o valor 30 a n
int p = m + n; // atribui o valor 55 (m + n) a p
}
Sentença if
As sentenças de seleção proporcionam controle sobre duas alternativas com base no valor lógico de uma
expressão.
if (expressãoLógica)
blocoSentenças1 //se são várias sentenças elas estão entre { }
[else if (expressãLógica)
blocoSentença2]
...
[else
blocoSentençasN]
Exemplo
if (i < 0)
System.out.println(“Número negativo”);
else
{
System.out.print(“Número válido, ”);
System.out.println(“é positivo”);
}
Sentenças switch
A sentença switch é a múltipla bifurcação:
switch (expressão_int)
{
case constante_exp1:
sentenças1;
/*tratando-se de múltiplas ações não é necessário estar entre chaves */
[break;]
[case constante_exp2:
sentenças2;
[break;]]
...
[case constante_expN:
sentençasN;
[break;]]
[default
16 Fundamentos de programação – Algoritmos, estruturas de dados e objetos
sentençasX;
[break;]]
}
Exemplos
1. switch (y / 50)
{
case 2: elemento = new Demo2(0, 0); break;
case 3: elemento = new Demo3(0, 0, 100); break;
case 4: elemento = new Demo4(0, 0, 200); break;
case 5: elemento = new Demo5(0, 0); break;
}
2. switch (n)
{
case 1:
case 2:
visualizarResultado(“1, 2, Serra de Cazorla”);
break;
case 3:
case 4:
visualizarResultado(“3, 4, Serra Magna”);
case 5:
case 6:
visualizarResultado(“3, 6, Serra de Jaen”);
break;
default:
visualizarResultado(n + “ fora do intervalo”);
} //fim de switch
Etiquetas
nomeEtiqueta:
break [nomeEtiqueta];
continue [nomeEtiqueta];
Exemplo
sair:
{
for (i = 0; i < 10; i++)
{
for (j = 0; j < 20; j++)
{
if (i == 1) break sair;
System.out.print(j + “ ”);
}
System.out.println ( ) ;
}
} //fim do bloco com a etiqueta
Manual de sintaxe da linguagem Java 2mm17
Sentença while
A sentença while é utilizada para criar repetições de sentenças no fluxo do programa.
while (expressãoLógica)
blocoSentenças // o blocoSentenças pode ser executado de 0 a n vezes
Exemplo
while (conta <= número)
{
System.out.print(conta + “, ”);
conta++;
}
Sentença do-while
A sentença do-while é utilizada para repetir a execução de sentenças e é executada pelo menos uma vez.
do
blocoSentenças // o blocoSentenças é executado pelo menos uma vez
while (expressãoLógica);
Exemplo
do
{
System.out.print(conta + “, ”);
conta++;
}
while (conta <= número)
Sentença for
A sentença for é usada para repetir um número fixo de vezes a execução de uma série de sentenças.
Exemplo
for (int i = 0; i < 10; i++)
a[i] = 5 * i;
System.exit(0);
Sintaxe
3. if (condição1){
sentença;
}else if (condição2){
sentença;
{else{
sentença;
{
Exemplo
1. if(a== b) { 2. if(a==b)
c=10; c=10;
d=25; else
} d=25;
h=1.5; h=1.5;
3. if (a= =b)
if(c= =d){
system.out.print1(“c= =d”);
}
else{
System.out.print1(“c!=d”);
}
Sentença switch
A sentença switch é uma sentença de múltipla bifurcação. Proporciona um meio de selecionar a execução
de diferentes partes do código dependendo do valor de uma expressão.
switch (expressão){
case valor 1
//seqüência de sentenças
break
case valor 2
//seqüência de sentenças
break;
-
-
-
case valor
//seqüência de sentenças
break
default;
//seqüência de sentenças
}
F.11.2 Operador +
O operador + é um operador de concatenação de cadeia String quando um dos operadores for uma cadeia
(String), caso contrário será representada a soma aritmética.
Exemplo
public class TesteCadeia {
public Static void main(String args[ ]){
system .out println(5+6+7+“teste”);
system. Out. Println(“teste ”+5+6+7);
}
}
Saída
18 teste
Teste 567
Exemplo
public class TesteCase {
public static void main(String args[ ]){
char letra =‘b’;
int pontos;
switch(letra){
case‘A’:
Pontos=100;
break;
case‘B’:
Pontos=70;
break;
default:
Pontos=0;
}
System.out.println (“pontos=” + pontos);
}
}
switch(contador){
case 1;
switch (total){
case 0:
System.out.println(“total é zero”);
break;
case 1:
System.out.println(“total é zero”);
break
}
break;
case2:...
while
O laço while permite que uma sentença ou bloco de sentenças seja executado repetidamente enquanto for
verdadeira uma condição ou expressão lógica.
Sintaxe
while(condição){
// corpo do laço ... sentença /sentenças
}
A condição do laço é avaliada antes de ser executado o laço, de modo que a condição é avaliada
inicialmente.
Manual de sintaxe da linguagem Java 2mm21
Exemplo
1. // conta de 0 a 9
int x=0;
while(x<10){
System.out.println(x);
x++;
}
//x=10 depois de terminar o laço
do-while
O laço do permite que uma seqüência de sentenças seja executada repetidamente enquanto uma condição
lógica é avaliada como verdadeira, e termina caso contrário. Em uma seqüência do-while, o corpo do laço
é executado pelo menos uma vez.
Sintaxe
do
//sentenças, corpo do laço
while (condição);
Exemplo
1. int x = 0;
do
System.out.println(x);
x++
}while(x<10);
//x=10 depois que termina o laço
for
O laço for executa as sentenças do corpo um número fixo de repetições (iterações) que depende de uma
variável de controle.
Sintaxe
Exemplo
1. for (int x=1; x<=10;x++)
// corpo do laço
}
4. //uso da vírgula
class vírgula{
public static void main(string args[ ]){
int a,b;
for(a=1,b=5; a<b; a++,b--){
System.out.println(“a= ”+a);
System.out.println(“b= ”+b);
}
}
}
Sintaxe Break
break;
break etiqueta;
Laços aninhados
Java permite aninhar laços:
//Laços aninhados
classes Aninhadas {
24 Fundamentos de programação – Algoritmos, estruturas de dados e objetos
break
Em Java, a sentença break tem três usos:
continue
continue volta o controle ao princípio do laço.
Sintaxe
continue;
continue etiqueta;
// demonstração de continue
class Continue{
public static void main(string args[ ]){
for(i=0,i<10;1++){
system.out.println(i+“ ”),
if(i%20 ==0)continue;
system.out.println(“ ”),
}
}
}
return
A sentença return é utilizada explicitamente para voltar de um método, já que, quando é executada, termina
imediatamente o método em que se insere.
Sintaxe
return;
return expressão;
1. //demonstração de return
class Return{
Manual de sintaxe da linguagem Java 2mm25
F.12 CLASSES
Uma classe é uma coleção de membros dado e métodos que define um objeto específico. É a construção
fundamental da linguagem Java. Uma classe pode ser definida pelo usuário ou por um dos pacotes incorpo-
rados a Java e é declarada com a palavra reservada class. A convenção utilizada para nomear as classes
utiliza uma letra maiúscula para a primeira letra do nome da classe.
Sintaxe
class nomeClasse
{
declaração de variáveis estáticas
declaração de variáveis de instância
declaração de construtores
declaração de métodos
declaração de métodos estáticos
declaração de métodos
tipos nomeMétodo (lista de parâmetros){
corpo do método
}
Os dados ou variáveis, definidos dentro de uma classe, denominam-se variáveis de instância. O código
está contido dentro de métodos. De maneira coletiva, os métodos e as variáveis definidas dentro de uma classe
são denominados membros da classe. As variáveis definidas dentro de uma classe são chamadas variáveis de
instância, já que cada instância da classe (ou seja, cada objeto da classe) contém sua própria cópia dessas
variáveis. Cada classe define um novo tipo de dados.
Exemplo
class caixa{ // caixa é um novo tipo de dado
double largura;
double altura;
double profundidade;
}
26 Fundamentos de programação – Algoritmos, estruturas de dados e objetos
class Caixa{
double largura, altura. Profundidade
public Caixa (double a, double h, double p){
largura = a;
altura =h;
profundidade =p;
}
public double obterVolume ( ){
return largura*altura*profundidade;
}
}
Um programa Java consta de uma coleção de arquivos ou unidades de compilação. Cada arquivo pode conter
um nome opcional de pacote, uma série de declarações import e, por último, uma seqüência de declarações
de interfaces ou classes. Uma unidade de compilação pode identificar seus pacotes, importar qualquer número
de outros pacotes, classes ou interfaces e declarar qualquer número de classes e interfaces.
Declaração de importações
Uma declaração de importação (import) nomeia um elemento de outro pacote que será utilizado nas decla-
rações posteriores de interfaces ou classes. Pode ser utilizado um asterisco para incluir todos os elementos de
um pacote.
import nomePacote.*;
import nomePacote.NomeClasse;
import nomePacote.NomeInterface;
Assim import java.io*; indica ao compilador que importe qualquer classe do pacote java.io
proporcionado por Java à medida que necessite. Uma boa idéia é incluir essa linha no princípio de qualquer
arquivo .java que realize operações de entrada/saída. Outros exemplos:
import java.útil.Date;
import.java.net.*;
Definição de classes
Uma definição de uma classe consta de uma declaração e um corpo. O corpo contém campos de dados e
declarações de métodos. A declaração de uma classe consta de palavras reservadas e identificadores: uma
seqüência opcional (no modelo sintático, para indicar que é opcional, coloca-se entre [ ]) de modificadores,
a palavra reservada class, o nome da classe, um nome opcional da classe pai, uma seqüência opcional de
interfaces e o corpo da classe com seus membros.
uma classe abstrata devem implementar os métodos abstratos de sua superclasse ou seguirão sendo abstratas.
Uma classe final não pode ser superclasse e todos os seus métodos são implicitamente final. Uma classe
pública deve estar em seu próprio arquivo denominado Nome.java. Os membros de uma classe podem ser
métodos e variáveis de instância (pertencentes a um tipo base ou uma classe).
// Classe complexa
public abstract class MeuObjeto extends OutraClasse implements InterfaceUm,
InterfaceDois
{
// campos de dados e declarações de métodos
} // MeuObjeto
Exemplos
1. public class PrimeiroPrograma
{
public static void main(String[ ] args)
{
System.out.println(“Serra Magna-Carchelejo”);
}
}
Declaração de variáveis
Em Java, as variáveis podem ser declaradas: (1) como campos de dados de uma classe, (2) como argumentos
de um método ou (3) como variáveis locais dentro de um bloco.
Uma declaração de variáveis de instância ou campos de dados tem uma parte de modificador opcional, um
tipo, um nome de variável e uma inicialização opcional.
Exemplos
1. public class Figura
{
protected Retângulo posição.
protected double dx, dy;
protected Cor cor;
//...
}
Exemplo
class Empregado extends Pessoa
{
public static final quantidade = 50;
//declaração de variáveis
//declaração de métodos
}
Manual de sintaxe da linguagem Java 2mm29
Criação de objetos
Uma instanciação (criação) de objetos cria uma instância de uma classe e declara uma variável desse tipo.
Os objetos são criados de uma classe utilizando o operador new. A sintaxe adequada é:
Declaração de métodos
As declarações de métodos simples, denominadas também de assuntos, constam de um tipo de retorno, um
identificador e uma lista de argumentos (parâmetros). O tipo de retorno pode ser qualquer tipo válido (incluin-
do uma classe) ou o tipo void se nada for devolvido. A lista de argumentos consta de declarações de tipo (sem
valores iniciais) separadas por vírgulas. A lista de argumentos pode estar vazia. Os métodos podem também
ter uma visibilidade explícita.
Os métodos de uma classe estão associados a uma instância específica da classe, exceto se forem estáticos.
Ativação de métodos
Quando ativamos um método, devemos proporcionar os argumentos do tipo adequado.
// interior de um método
{
calcularZ( );
int z = calcularZ(16,25);
MeuObjeto obj = converter(25, “Olá Mackoy” );
...
}
O método main
Cada aplicação Java (não as applets) deve ter um método main que é onde começa a execução da aplicação,
ou seja, para executar um programa, o interpretador de Java começa ativando o método main( ). Este método
é ativado antes da criação de um objeto e deve ser declarado como static para que se possa ativar sem ter
de se referir a uma instância particular da classe. Além de ser ativado pelo código fora de sua classe, também
tem de ser declarado como public, que é a forma de permitir que um membro de uma classe possa ser uti-
lizado pelo código que esteja fora dela. A palavra reservada void indica que main não devolve nada.
Extensão de classes
[acesso] [final] class NomeClasse extends Superclasse
{
// corpo da classe ampliada
}
Manual de sintaxe da linguagem Java 2mm31
Construtor da subclasse
public NomeClasse(arg11, ...)
{
super(...);
...
}
Construtores
A sintaxe de um construtor é semelhante à de um método, sem tipoDeResultado e cujo nome deve coincidir
com o da classe. O construtor é invocado automaticamente quando criamos uma instância da classe.
[modificadoresDeConstrutor] nomeConstrutor
([tipoParâmetro1 parâmetro1
[,tipoParâmetro2 parâmetro2[, ...]]])
{
// corpo do construtor
}
Os modificadoresDeConstrutor seguem as mesmas regras que nos métodos normais, mas um cons-
trutor abstrato estático final não é permitido.
Um construtor deve ser invocado com o operador new.
Uma classe pode ter múltiplos métodos construtores, sempre que eles se diferenciem uns dos outros no
número e/ou tipo de parâmetros.
class Pessoa
{
protected String nome = “ ”;
protected int idade = 0;
public Pessoa(String nom, int anos)
{
nome = nom;
idade = anos;
}
public static void main(String args[ ])
{
Pessoa p = new Pessoa(“Luizinho Mackoy”, 13);
System.out.println(“Nome: “+ p.nome + “ ” + “Idade: “ ” + p.idade);
}
}
{
super(nom, anos);
categoria = nível;
salário = pagamento,
}
public static void main(String args[ ])
{
Empregado = new Empregado(“Artur Mackoy”, 13, “médio”, 200000);
System.out.println(“Nome: “ + e.nome + “ ” + “Idade: ” + e.idade);
System.out.println(“Nível : + e.categoria + “ ”
+ “Salário : ” + e.salário);
}
}
A classe que implementa a interface deve implementar todos os métodos declarados nela.
public class Implementa [extends Pai] implements NomeInterface
{
public tipoDeResultado nomeMétodo( )
{
//...
}
//se implementam todos os métodos da interface NomeInterface
}
É possível definir classes que tenham objetos do tipo NomeInterface, como se a interface fosse uma
classe, podendo assim ser usada nelas as diversas implementações desta. A classe Exemplo pode usar, entre
outras que forem definidas, a que oferece a classe Implementa.
public class Exemplo
{
Manual de sintaxe da linguagem Java 2mm33
public Exemplo( )
{
//...
}
public tipoDeResultado umMétodo(NomeInterface elemento)
{
//...
}
}
Classes anônimas
Uma classe anônima é aquela que não tem nome, e quando se cria um objeto dessa mesma classe, no lugar
do nome colocamos diretamente a definição.
Por exemplo, considerando declarada uma classe Implementa que implementa NomeInterface, a seguinte
instrução
e.umMétodo(new Implementa( ));
passa a e.umMétodo uma nova instância desta classe Implementa como parâmetro. Ao se empregar uma
classe anônima, não seria efetuada a declaração de Implementa e a instrução anterior seria substituída por
e.umMétodo(new NomeInterface( )
{
public tipoDeResultado nomeMétodo( )
{
//...
}
// são implementados todos os métodos da interface
NomeInterface
}
);
Modificações de acesso
As modificações de acesso são colocadas diante da declaração das classes:
F.13.3 Métodos
Um método proporciona a implementação do comportamento dinâmico dos objetos e pode mudar o estado
dos objetos que são ativados.
Sintaxe
Modificações tipo nomeMétodo (lista de parâmetros){
Seqüência de sentença
}
Os métodos que têm um tipo de retorno diferente de void devolvem um valor utilizando a sentença
return:
return valor;
Valor é o valor devolvido
Exemplo
class Caixa{
double largura;
double altura;
// cálculo e devolve o volume
double volume ( ) {
return largura *altura *profundidade;
}
}
Sintaxe
NomeConstrutor (lista parâmetros){
Corpo do construtor
Exemplo
1. class Caixa {
double largura;
double altura;
double profundidade;
// construtor
caixa ( ){
Manual de sintaxe da linguagem Java 2mm35
F.13.4 Construtores
Todos os objetos devem ser inicializados quando são criados, de modo que “nasçam” com um estado bem
definido. Um construtor é um tipo especial de método que inicializa um objeto imediatamente para sua cria-
ção. Tem o mesmo nome da classe e sintaticamente é semelhante a um método. Os construtores não devolvem
nenhum tipo e são ativados automaticamente quando é criado um objeto da classe.
O construtor pode ser sobrecarregado para dar múltiplos construtores com diferentes tipos de argumento
parado. Os construtores são definidos geralmente como public.
Os valores separam o construtor situando-os dentro dos parênteses das sentenças de criação de objetos
da classe.
2. class ponto
int x,y;
Ponto (int x,int y){
this.x=x;
this.y=y;
}
Sintaxe
protect void finalize( )
}
//código de finalização
}
Em Java é possível definir dois ou mais métodos na mesma classe, que compartilhem o mesmo nome, enquanto
as declarações de seus parâmetros é diferente. Nesse caso, dizemos que os métodos estão sobrecarregados e o
processo é conhecido como sobrecarga de métodos. A sobrecarga de métodos é uma das formas em que Java
implementa o polimorfismo.
Um método de uma subclasse que tem o mesmo nome mas diferentes argumentos de um método de uma
superclasse é considerado uma função sobrecarregada. O compilador decide qual é o método mais adequado
baseando-se na lista de argumentos e no tipo do objeto que tem a ativação.
Exemplo
//sobrecarga de método
class Demosobrecarga {
void teste ( ){
System.out.println(“nenhum parâmetro”)
}
{
System.out.println(“a e b”+a+“ ”+b);
}
class Sobrecarga {
public static void main(string args[ ]){
DemoSobrecarga ob=new DemoSobrecarga ( );
int resultado;
Exemplo2
public class Teste1{
public static void main(string args[ ]{
Subclasse s=new Subclasse( );
System.out.println(“a mensagem é” + s.lerMensagem( ));
}
}
classe Superclasse{
public String lerMensagem( ){
return “Supermensagem”;
}
}
Saída
A mensagem é submensagem
As classes abstratas não podem instanciar-se, mas fazem referências de um tipo abstrato que pode ser
utilizado para apontar uma instância de um objeto de uma subclasse concreta.
38 Fundamentos de programação – Algoritmos, estruturas de dados e objetos
As classes abstratas podem definir métodos abstratos e concretos. Qualquer subclasse concreta de uma
classe abstrata deve implementar os métodos abstratos da classe abstrata. As classes abstratas são designadas
utilizando as palavras-chave abstract à frente da palavra-chave class na sentença de declaração da classe.
Os métodos abstratos são declarados com o formato seguinte:
Exemplo
A classe abstrata Figura define o método calcularárea( ). Duas subclasses de Figura, Retângulo e
Triângulo proporcionam duas implementações diferentes de calcularárea( ).
//classe interna.
classe Interna{
void apresentam( ){
System.out.println(“apresentam:externa_x=”+externa_x);
}
}
}
class DemoClasseInterna {
public Static void main(String args[ ]){
Externa externa = new Externa( ):
Externa.teste( );
}
}
Exemplo
final class A{
//...
}
// A seguinte classe não é legal
classe B extends A { //erro, não é possível subclasse A
//...
}
// A se declara final e portanto B não pode herdar de A
F.15 HERANÇA
A herança permite criar uma classe conhecida como subclase ou classe filha de outra classe conhecida como
superclasse ou classe pai. Conseqüentemente, uma subclasse é uma versão especializada (uma extensão)
de uma superclasse. Herdam-se todas as variáveis de instância e os métodos definidos na superclasse e
acrescentam-se elementos próprios.
Sintaxe
class nomesubclasse extends nomeSuperClasse {
Declarações de variáveis e métodos
Somente pode ser especificada uma superclasse para qualquer subclasse que é criada. Esse tipo de heran-
ça é denominado herança simples. Java não suporta a herança de múltiplas superclasses, ou seja, não suporta
herança múltipla. Pode existir somente uma superclasse depois da palavra chave extends.
Regra
Um objeto da subclasse tem acesso aos métodos públicos e membros dado e protegidos e definidos
na superclasse; não podem ser acessados os membros da superclasse que tenham sido declarados
privados.
40 Fundamentos de programação – Algoritmos, estruturas de dados e objetos
class A{
int i;
private int j; //j, é privado, só se acessa em A
void lerij(int x, int j){
i=x;
j=y;
}
}
class B extends A {
int total,
void soman ( ){
total =i+j; // erro,j não é acessível aqui.
}
}
F.16 PACOTES
Um pacote é um continente de classe que é utilizado para dividir ou compartimentar o espaço do nome da
classe. Os pacotes são armazenados de forma hierárquica e são importados explicitamente em novas definições
de classe.
Java utiliza os diretórios dos sistemas de arquivo para armazenar pacotes, por exemplo, os arquivos
Class que são criados como parte de um pacote devem ser armazenados em um diretório que tenha o nome
do pacote.
Exemplo
Os arquivos .class das classes do pacote demo.upsa devem ser armazenados em um diretório denominado
upsa dentro de um diretório denominado demo.
Exemplo
import java.útil.Dado; //acesso à classeDado do
//pacote java.útil
import jav.io.*; //importa-se tudo para o pacote.
Todas as classes-padrão Java incluídas no compilador são armazenadas em um pacote denominado Java.
As funções básicas da linguagem são armazenadas em um pacote dentro do pacote Java chamado java.lang.
import java.lang.*;
F.17 INTERFACES
As interfaces são utilizadas para impor certa funcionalidade nas classes que as implementam, ou seja, são
utilizadas para abstrair a interface de uma classe de sua implementação. Utilizando interface, podemos
especificar o que faz uma classe mas não como ela faz. As interfaces são muito semelhantes sintaticamente
às classes, mas não têm implementação de métodos.
Sintaxe
TipoAZero interface nome {
Tipo_retorno nomeMétodo 1 (lista de parâmetros);
Tipo_retorno nomeMétodo 2 (lista de parâmetros);
// outros métodos.
Tipo nomeVar 1= valor;
Tipo nomeVar 2= valor;
// outras variáveis
}
Exemplo
1. interface reativada {
void reativada (int param);
}
2. interface Área {
double lerÁrea( );
}
F.18 EXCEÇÕES
Sentença try-catch
A captura de exceções é realizada mediante blocos try-catch. A(s) sentença(s) de um bloco será(ão)
colocada(s) sempre entre chaves:
try
blocoATentar // ainda que seja uma única sentença ela irá entre { }
catch (tipoExceção1 identificador1)
blocoSentenças1
[catch (tipoExceção2 identificador2)
blocoSentenças2]
...
[finally
blocoSentençasN]
ou
try
blocoATentar
finally
blocoSentençasN
Sentença throw
Uma sentença throw lança uma exceção, que pode ser uma exceção recebida ou uma nova exceção. Uma cláusula
catch pode receber uma exceção e, em lugar de tratá-la ou depois de fazê-lo, voltar a lançá-la mediante uma
instrução throw.
try
blocoATentar
catch(NumberFormatException identificador)
{
//...
throw (identificador);
}
Para lançar uma nova exceção, criamos um objeto de uma subclasse de Exception que implemente um
construtor e seja lançado com throw quando ocorra o fato que deve provocar a exceção.
if (expressãoLógica)
throw new ConstrutorSubclasseException([parâmetro1[, parâmetro2
[,...]]]);
Exemplo
if (idade < 18 || idade > 65)
throw new ForaDoIntervalo(“Exceção: valor fora do intervalo”);
class ForaDoIntervalo extends Exception
{
String mensagem;
public ForaDoIntervalo (String causa)
{
mensagem = causa;
}
public String getMessage( )
{
return mensagem;
}
}
Sentença throws
Lista as exceções não tratadas e que pertencem a classes diferentes de RuntimeException. Assim, seu
tratamento será adiado e deverá ser efetuado pelo método ativador, ou terão de voltar a ser listadas no
cabeçalho deste com outra cláusula throws:
Sentença package
Cada classe pública definida em Java deve ser armazenada em um arquivo separado; se existem várias
relacionadas, todas elas são armazenadas no mesmo subdiretório. Um conjunto de classes relacionadas
definidas em um subdiretório comum pode constituir um pacote Java. Os arquivos do pacote devem
começar com a seguinte sentença:
package nomePacote;
onde o nome do pacote reflete o subdiretório que contém essas classes. Utilizamos o caractere ponto (.) como
separador entre nomes de diretórios quando for necessário especificar vários para referenciar o que contém as
classes.
Exemplo
package livro.Tema03;
Podemos utilizar uma classe definida em outro pacote especificando, para se referir a ela, a estrutura de
diretórios do outro pacote seguida pelo nome da classe que desejamos usar e empregando o caractere ponto
como separador. Referenciar classes dessa forma pode ser desagradável e a solução consiste em utilizar
import, que permite incluir classes externas ou pacotes inteiros no arquivo atual.
F.19 Miscelânea
Se for static não é necessário se referir a uma instância em particular da classe e pode referenciar-se
como
nomeClasse.nomeComponente
Os membros de uma classe estão associados a uma instância específica dela, exceto se são estáticos.
Uma exceção é uma condição anormal que é produzida em uma sentença de código em tempo de execução.
Em outras palavras, uma exceção é um erro em tempo de execução. Uma exceção Java é um objeto que
descreve uma condição excepcional (este é erro) que ocorreu em um segmento de código. Quando surge uma
condição excepcional, cria-se um objeto que representa uma exceção e é lançado (throw) no método que
produz o erro.
Manual de sintaxe da linguagem Java 2mm45
O uso de exceções é administrado mediante cinco palavras reservadas: try, catch, throw, throws e
finally.
finally {
// bloco de código que se executa antes de terminar o bloco try
}
tipoExceção tipo de exceção que ocorreu
Sintaxe finally
finally{
código;
{
Sintaxe throw
throw objetolançável;
Sintaxe throws
...
nomeMétodo throws Exceção 1, Exceção2...
Exemplo
public class TesteExceção {
public static void main (String [ ]a)
int [ ] a =
0,1,2,3,4,5
};
try {
for (int i=0; i < 6; ++i){
System.out.println(“a[“+i+”]é”+a[i]);
}
} catch (exceção e){
System.out.println (“Exceção :”+e);
}
System.out.println(“código que pode ser executado”);
}
}