Sintaxe I

Propaganda
Programação
Na Web
Linguagem Java
Parte I
Sintaxe
António Gonçalves
Algumas características
• Estruturas de controlo, operadores, expressões
e tipos básicos são semelhantes ao C++/C.
• Não há apontadores; Arrays e Strings são
objectos.
• Memória recuperada por garbage collector.
• Herança simples com raiz em Object.
• “Mistura de herança” através de interfaces.
• Strongly type checked estático e dinâmico.
• Suporte de threads; Object tem métodos para
concorrência.
• Suporte de excepções; O run-time gera
excepções.
JAVA - Aspectos básicos
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
Fontes em Unicode versão 2.0
• O Unicode 2.0 tem 38.885 caracteres.
• Os primeiros 128 são iguais ao ASCII.
• As fontes em ASCII são transformadas em Unicode.
• Para além das sequências de escape convencionais do C
podemos usar \uhhhh para um caracter em Unicode. Mas,
esta translação é feita antes da compilação.
• Identificadores e os conteúdos de char ou String podem
ter qualquer caracter Unicode.
static final double π = 3.1416
• No Unicode 2.1 \u20AC é o simbolo
€
JAVA - Aspectos básicos
do Euro.
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
Comentários
• Para além dos comentários /*...*/ e //... do C++ existe os
comentários de documentação /**...*/
• Os comentários de documentação devem prefixar a classe,
atributo ou método a documentar.
• O comando javadoc gera um documento HTML a partir do
código comentado.
• Estes comentários conter tags HTML.
• Uma linha começada por @ dentro destes comentários
serve para dar comandos adicionais ao javadoc.
– @see , @version , @author , @param , @return , @exception ,
– @deprecated , @since , @throws
JAVA - Aspectos básicos
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
Exemplo de geração de
documentação
/**
* Reassigns the "standard" error output stream.
*
* <p>First, if there is a security manager,
* its <code>checkPermission</code> method is
* called with a <code>RuntimePermission("setIO")</code>
* permission to see if it's ok to reassign the
* "standard" error output stream.
*
* @param out the new standard error output stream.
*
* @throws SecurityException
* if a security manager exists and its
* <code>checkPermission</code> method doesn't allow
* reassigning of the standard error output stream.
*
* @see SecurityManager#checkPermission
* @see java.lang.RuntimePermission
* @since JDK1.1
*/
public static void setErr(PrintStream err) {
checkIO();
setErr0(err);
}
JAVA - Aspectos básicos
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
Exemplo de geração de
documentação
JAVA - Aspectos básicos
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
Em Java não há um
preprocessador
• Não necessita #include
– Em java não é necessário. (import)
• Não existe #define
– Um método static final assume o papel de macro
(quase)
– Um atributo static final ou uma variável final é para todos os efeitos uma
constante.
– Algumas optimizações do compilador estão predefinidas na linguagem.
...
...
final
final int
int DEBUG_LEVEL
DEBUG_LEVEL == 10;
10;
if
if (( DEBUG_LEVEL
DEBUG_LEVEL >> 55 ))
A;
A;
else
else
B;
B;
...
...
JAVA - Aspectos básicos
A;
A;
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
Tipos primitivos
*
*
*
*
Os tipos primitivos têm dimensão fixa.
Todos os valores são com sinal.
Não existem modificadores.
Tipo
Conteúdo
Não há conversões
boolean
true, false
implícitas.
char
unicode
* Tipos primitivos
byte
inteiro com sinal
são sempre tratados
short
inteiro com sinal
por valor.
int
inteiro com sinal
long
inteiro com sinal
* Os arrays e as
float
vírgula flutuante
strings não são
double
vírgula flutuante
tipos primitivos.
JAVA - Aspectos básicos
Dimensão
1 bit
16 bit
8 bit
16 bit
32 bit
64 bit
32 bit
64 bit
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
boolean versus int
• Estão predefinidas as constantes true e false.
• Conversão de int para boolean tem que ser explicita
int i = ...;
boolean b = ( i !=0 );
• As condições são expressões do tipo boolean
int i = ...;
if ( i != 0 )
... // O operador != retorna um boolean
• Conversão de boolean para int recorrem normalmente a
expressões ternárias
boolean b = ...;
int i = ( b ? 1 : 0 );
JAVA - Aspectos básicos
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
Limites das operações aritméticas
• A divisão inteira por zero gera uma excepção que
pode ser ou não capturada.
int j=..., i=...;
try { i / j; }
catch(ArthmeticException e){
System.out.println(e);}
• As operações entre valores reais (float ou
double) não geram excepções.
• Estão definidas as constantes +0, -0, -∞,+∞ e
NaN.
float a = ..., b = ...;
if ( a / b == Float.POSITIVE_INFINITY ) {
System.out.println("b == 0");
}
JAVA - Aspectos básicos
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
Operadores são semelhantes ao C++
• Aritméticos
– binários: +, -, *, /, %
(+ entre strings)
– unários: +, - e ainda os prefixos e sufixos ++, -• Relacionais:
>, <, ==, <=, >=, !=,instanceof
• Condicionais:
&&, ||, !, ?:
• Bit a bit:
>>, <<, &, |, ^, ~, >>>
• Afectação:
=, +=, -=, *=, etc.
• Especiais: [], (param), ., new, (type)
- Aspectos
básicospermite a sobrecarga de operadores
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
• JAVAMas
não
Prioridade e associatividade dos
operadores
• As regras de prioridade e de associatividade dos
operadores são
sufixos
[] . (arg) ++ -semelhantes ao C++.
•
•
prefixos
tipo
Todos os operadores
aritméticos
binários, excepto os
shift
de afectação, são
associativos à esquerda. relacionais
igualdade
bit a bit
A prioridade é a
lógicos
indicada na tabela.
ternários
afectação
JAVA - Aspectos básicos
++ -- - + ~ !
new (type)
{* / %} {+ -}
>> << >>>
> < >= <= instanceof
== !=
{&} {^} {|}
{&&} {||}
?:
= += *= >>= etc.
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
Precedência de operadores
Aumenta
prioridade de
resolução
( ) [] . ; ,
++ -- !
*/%
+>> << >>>
> < >= <=
== !=
&
^
|
&&
||
?:
=
Diminui prioridade
de resolução
JAVA - Aspectos básicos
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
Classes Wrapper
• Cada tipo primitivo possui uma classe
correspondente (wrapper class)
Primitive
Data Type
byte
short
int
long
float
double
char
boolean
Corresponding
Object Class
Byte
Short
Integer
Long
Float
Double
Character
Boolean
– O valor é armazenado num campo do objecto
JAVA - Aspectos básicos
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
Uso de Wrapper
• Define constantes uteis para cada tipo
– Exemplo,
Integer.MAX_VALUE
Float.NEGATIVE_INFINITY
• Converte tipos
– Usar o método parseXxx para converter String para o
tipo primitivo correspondente
try {
String value = "3.14e6";
double d = Double.parseDouble(value);
} catch (NumberFormatException nfe) {
System.out.println("Can't convert: " + value);
}
JAVA - Aspectos básicos
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
Wrappers: Conversão de Strings
Data Type
byte
new
short
new
int
new
long
new
float
new
double
new
JAVA - Aspectos básicos
Convert String using either …
Byte.parseByte(string )
Byte(string ).byteValue()
Short.parseShort(string )
Short(string ).shortValue()
Integer.parseInteger(string )
Integer(string ).intValue()
Long.parseLong(string )
Long(string ).longValue()
Float.parseFloat(string )
Float(string ).floatValue()
Double.parseDouble(string )
Double(string ).doubleValue()
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
Instruções de controlo
• Decisão:
if-else,
• Repetição:
for, while, do-while
• Quebra:
break, continue, return
• Excepção:
try-catch-finally, throw
switch-case
• Desta vez é que foi, não existe goto
– mas o break e o continue podem ter o nome do bloco de
instruções a quem vão quebrar o fluxo.
JAVA - Aspectos básicos
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
Comandos de controle (cont.)
Exemplo de selecção
clicado%=4;
switch(clicado){
case 0: saida=3;
break;
case 1: saida=2;
break;
default: saida=0;
}
System.out.println(saida);
JAVA - Aspectos básicos
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
Comandos de controle (cont. )
Exemplo de repetição com while
while(x>6){
while(y>9){
while((z>=6) && (m!=10)){
z++;
m%=10;
}
y=z+m;
}
x+=y;
}
JAVA - Aspectos básicos
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
Comandos de controle (cont.)
Exemplo de repetição com do-while
do{
do{
do{
z++;
m%=10;
} while((z>=6) && (m!=10));
y=z+m;
} while(y>9);
x+=y;
} while(x>6);
JAVA - Aspectos básicos
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
Comandos de controle (cont.)
Exemplo de repetição com for
for(x=0,y=0;((x<100) && (y<=20));x++,y++){
for (int z=-5;z<10;z+=3)
System.out.println(z);
System.out.println(y);
}
JAVA - Aspectos básicos
http://ltodi.est.ips.pt/leonardo/ci/MaterialApoio.htm
Download