Tipos, Literais, Operadores

Propaganda
Tipos, Literais,
Operadores
Identificadores
z
São palavras utilizadas para nomear variáveis, métodos e
classes
z
Na linguagem Java, o identificador sempre começa por
letra, sublinhado(_) ou cifrão ($)
z
z
Não podem começar por números
z
São “case sensitive”
Do segundo caractere em diante, pode conter qualquer
seqüência de letras, dígitos, sublinhados ou cifrões
Tipos, Literais, Operadores
2
Identificadores
z
Exemplos de identificadores válidos:
z
z
z
z
z
z
z
nomeAluno
saldo
lâmpada
// não recomendável
User_name // fora do padrão
_sys_var1
Class
// não recomendável
Java utiliza o padrão Unicode (16 bits)
Tipos, Literais, Operadores
3
Palavras reservadas em Java
abstract
boolean
break
byte
case
catch
do
final
implements
long
private
static
char
double
finally
import
native
protected
super
class
else
float
instanceof
new
public
switch
continue
extends
for
int
return
synchronized
this
default
throw
while
throws
enum
transient
void
volatile
if
interface
package
short
try
true, false e null não são palavras reservadas e sim literais
OBS: Todas as palavras reservadas são escritas com letras minúsculas
Tipos, Literais, Operadores
4
Palavras reservadas
z
Modificadores de Acesso
z
z
Modificadores de classe, método e variável
z
z
private, protected, public
abstract, class, extends, final, implements, interface,
native, new, static, synchronized, transient, volatile
Controle de fluxo
z
break, case, continue, default, do, else, for, if,
instanceof, return, switch, while
Tipos, Literais, Operadores
5
Palavras reservadas
z
Tratamento de Erros
z
z
Controle de Pacotes
z
z
catch, finally, throw, throws, try, assert
import, package
Tipos de Dados
z
boolean, byte, char, double, float, int, long, short,
void (somente retorno)
Tipos, Literais, Operadores
6
Palavras reservadas
z
Exemplo de códigos que não compilam:
class Teste {
public void go() { }
public int break(int b) { }
}
class LiteralTest {
public static void main(String [] args) {
int true = 100; //isto causa erro
}
}
Tipos, Literais, Operadores
7
Tipos de dados primitivos
z
Java, assim como Pascal, C e C++, é uma
linguagem fortemente tipada -- todas as variáveis
devem ter um tipo
z
Diferentemente de C e C++, os tipos primitivos em
Java são portáteis entre todas as plataformas
Tipos, Literais, Operadores
8
Tipos primitivos em Java
z
z
Armazenados na pilha (acesso rápido)
Não são objetos. Classe 'wrapper' faz transformação, se
necessário (encapsula valor em um objeto)
Tipos, Literais, Operadores
9
Exemplos
Tipos, Literais, Operadores
10
Caracteres especiais
Tipos, Literais, Operadores
11
Operadores
Tipos, Literais, Operadores
12
Precedência
Tipos, Literais, Operadores
13
Tabela de Precedência
Tipos, Literais, Operadores
14
Atribuição
Tipos, Literais, Operadores
15
Operadores Matemáticos
Tipos, Literais, Operadores
16
Incremento e Decremento
Tipos, Literais, Operadores
17
Operadores Relacionais
Tipos, Literais, Operadores
18
Operadores Lógicos
Tipos, Literais, Operadores
19
Operadores orientados a bit
Tipos, Literais, Operadores
20
Operadores de Deslocamento
Tipos, Literais, Operadores
21
Operador Ternário (if-else)
Tipos, Literais, Operadores
22
Operador de Concatenação
Tipos, Literais, Operadores
23
instanceof
Tipos, Literais, Operadores
24
Tipos de dados
Tipos, Literais, Operadores
25
Conversão de tipos primitivos
Tipos, Literais, Operadores
26
Conversão de referências
Tipos, Literais, Operadores
27
Conversão de tipos primitivos
z
A linguagem Java não suporta a coerção arbitrária
dos tipos de variáveis, exceto no caso de
concatenação de strings
z
Exemplo
z
z
z
z
long bigval = 6;
int smallval = 99L;
float x = 12.414F;
float y = 12.414;
Tipos, Literais, Operadores
// 6 é um int, OK
// 99 é um tipo long, ilegal
// 12.414F é um tipo float, OK
// é um tipo double, ilegal
28
Conversão automática
z
Qualquer operação com dois ou mais operandos
de tipos diferentes sofrerá promoção (conversão
automática) ao tipo mais abrangente, que pode
ser:
z
z
O maior ou mais preciso tipo da expressão (até double)
O tipo int (para tipos menores que int)
double d = 10 + 50L + 4.6;
// tudo é promovido para double
Tipos, Literais, Operadores
29
Conversão automática
z
As regras para conversão com tipos primitivos
podem ser assim resumidas:
z
z
O tipo boolean não pode ser convertido para nenhum
outro tipo
Os tipos não-booleanos podem ser convertidos para
outros tipos não-booleanos, contanto que não haja
perda de precisão. Isto é, podem ser convertidos
apenas para tipos que suportem um limite igual ou
maior ao seu
Tipos, Literais, Operadores
30
Coerção (cast)
z
As variáveis podem ser convertidas em tipos maiores de
maneira automática, mas não em tipos menores
z
z
z
z
Desta forma, uma expressão int pode ser tratada como
long, mas uma expressão long não poderá ser tratada
como int sem que haja uma coerção explicita
Uma coerção é utilizada para persuadir o compilador a
reconhecer uma atribuição
Esse procedimento pode ser adotado, por exemplo,
para “comprimir” um valor long em uma variável int
Na coerção, o programador assume os riscos da
conversão de dados
Tipos, Literais, Operadores
31
Coerção
z
Não há risco de perda de informação na atribuição a
seguir:
z
z
Mas o compilador acusará erro porque um long não
pode ser atribuído a um int
z
z
long L = 120;
int i = L;
Solução: int i = (int) L;
O operador de coerção tem maior precedência que os
demais operadores
Tipos, Literais, Operadores
32
Coerção - Exemplo
A execução de código
provoca duas
conversões. Em ambas
ocorre perda de
informação
public class Test {
public static void main(String args[]) {
int i = 16777473;
short s = (short) i;
byte b = (byte) i;
System.out.println(“Valor int:” + i);
System.out.println(“Valor short:” + s);
System.out.println(“Valor byte:” + b);
}
i i==00000001
0000000100000000
0000000000000001
0000000100000001
00000001
}
(int
(int(4
(4bytes)
bytes) - -valor:
valor:16777473)
16777473)
ss==00000001
0000000100000000
0000000000000001
0000000100000001
00000001
(short
(short(2
(2bytes)
bytes)- -valor:
valor:257)
257)
bb==00000001
0000000100000000
0000000000000001
0000000100000001
00000001
Tipos, Literais, Operadores
(byte
(byte(1
(1byte)
byte)- -valor:
valor:1)
1)
33
Coerção – Exemplo com
objetos
Array v = new Array( );
v.add(“Hello”);
String s = (String)v.get(0);
z
Como o método get sempre retorna um elemento do tipo
Object, que não pode ser atribuído a uma String, torna-se
necessário fazer o cast antes da atribuição
z
Caso fosse feita a atribuição direta, teríamos um erro de
compilação:
String s = v.get(0);
Tipos, Literais, Operadores
// erro
34
Download