tipos, literais, operadores - deinf/ufmamario/grad/lp2/tiposoperadores.pdf · 3 tipos, literais,...
TRANSCRIPT
![Page 1: Tipos, Literais, Operadores - DEINF/UFMAmario/grad/lp2/TiposOperadores.pdf · 3 Tipos, Literais, Operadores 5 Palavras reservadas zModificadores de Acesso zprivate, protected, public](https://reader030.vdocuments.net/reader030/viewer/2022032713/5c02897109d3f279018e4b54/html5/thumbnails/1.jpg)
1
Tipos, Literais,Operadores
Tipos, Literais, Operadores 2
Identificadores
São palavras utilizadas para nomear variáveis, métodos e classes
Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($)
Não podem começar por números
São “case sensitive”
Do segundo caractere em diante, pode conter qualquer seqüência de letras, dígitos, sublinhados ou cifrões
![Page 2: Tipos, Literais, Operadores - DEINF/UFMAmario/grad/lp2/TiposOperadores.pdf · 3 Tipos, Literais, Operadores 5 Palavras reservadas zModificadores de Acesso zprivate, protected, public](https://reader030.vdocuments.net/reader030/viewer/2022032713/5c02897109d3f279018e4b54/html5/thumbnails/2.jpg)
2
Tipos, Literais, Operadores 3
IdentificadoresExemplos de identificadores válidos:
nomeAlunosaldolâmpada // não recomendávelUser_name // fora do padrão_sys_var1Class // não recomendável
Java utiliza o padrão Unicode (16 bits)
Tipos, Literais, Operadores 4
Palavras reservadas em Java
abstract boolean break byte case
catch char class continue default do double else extends final finally float for if implements import instanceof int interface long native new return package private protected public synchronized short static super switch this try
throw throws transient void volatile while enum
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
![Page 3: Tipos, Literais, Operadores - DEINF/UFMAmario/grad/lp2/TiposOperadores.pdf · 3 Tipos, Literais, Operadores 5 Palavras reservadas zModificadores de Acesso zprivate, protected, public](https://reader030.vdocuments.net/reader030/viewer/2022032713/5c02897109d3f279018e4b54/html5/thumbnails/3.jpg)
3
Tipos, Literais, Operadores 5
Palavras reservadasModificadores de Acesso
private, protected, public
Modificadores de classe, método e variávelabstract, class, extends, final, implements, interface, native, new, static, synchronized, transient, volatile
Controle de fluxobreak, case, continue, default, do, else, for, if, instanceof, return, switch, while
Tipos, Literais, Operadores 6
Palavras reservadasTratamento de Erros
catch, finally, throw, throws, try, assert
Controle de Pacotesimport, package
Tipos de Dadosboolean, byte, char, double, float, int, long, short, void (somente retorno)
![Page 4: Tipos, Literais, Operadores - DEINF/UFMAmario/grad/lp2/TiposOperadores.pdf · 3 Tipos, Literais, Operadores 5 Palavras reservadas zModificadores de Acesso zprivate, protected, public](https://reader030.vdocuments.net/reader030/viewer/2022032713/5c02897109d3f279018e4b54/html5/thumbnails/4.jpg)
4
Tipos, Literais, Operadores 7
Palavras reservadas
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 8
Tipos de dados primitivos
Java, assim como Pascal, C e C++, é uma linguagem fortemente tipada -- todas as variáveis devem ter um tipo
Diferentemente de C e C++, os tipos primitivos em Java são portáteis entre todas as plataformas
![Page 5: Tipos, Literais, Operadores - DEINF/UFMAmario/grad/lp2/TiposOperadores.pdf · 3 Tipos, Literais, Operadores 5 Palavras reservadas zModificadores de Acesso zprivate, protected, public](https://reader030.vdocuments.net/reader030/viewer/2022032713/5c02897109d3f279018e4b54/html5/thumbnails/5.jpg)
5
Tipos, Literais, Operadores 9
Tipos primitivos em JavaArmazenados 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 10
Exemplos
![Page 6: Tipos, Literais, Operadores - DEINF/UFMAmario/grad/lp2/TiposOperadores.pdf · 3 Tipos, Literais, Operadores 5 Palavras reservadas zModificadores de Acesso zprivate, protected, public](https://reader030.vdocuments.net/reader030/viewer/2022032713/5c02897109d3f279018e4b54/html5/thumbnails/6.jpg)
6
Tipos, Literais, Operadores 11
Caracteres especiais
Tipos, Literais, Operadores 12
Operadores
![Page 7: Tipos, Literais, Operadores - DEINF/UFMAmario/grad/lp2/TiposOperadores.pdf · 3 Tipos, Literais, Operadores 5 Palavras reservadas zModificadores de Acesso zprivate, protected, public](https://reader030.vdocuments.net/reader030/viewer/2022032713/5c02897109d3f279018e4b54/html5/thumbnails/7.jpg)
7
Tipos, Literais, Operadores 13
Precedência
Tipos, Literais, Operadores 14
Tabela de Precedência
![Page 8: Tipos, Literais, Operadores - DEINF/UFMAmario/grad/lp2/TiposOperadores.pdf · 3 Tipos, Literais, Operadores 5 Palavras reservadas zModificadores de Acesso zprivate, protected, public](https://reader030.vdocuments.net/reader030/viewer/2022032713/5c02897109d3f279018e4b54/html5/thumbnails/8.jpg)
8
Tipos, Literais, Operadores 15
Atribuição
Tipos, Literais, Operadores 16
Operadores Matemáticos
![Page 9: Tipos, Literais, Operadores - DEINF/UFMAmario/grad/lp2/TiposOperadores.pdf · 3 Tipos, Literais, Operadores 5 Palavras reservadas zModificadores de Acesso zprivate, protected, public](https://reader030.vdocuments.net/reader030/viewer/2022032713/5c02897109d3f279018e4b54/html5/thumbnails/9.jpg)
9
Tipos, Literais, Operadores 17
Incremento e Decremento
Tipos, Literais, Operadores 18
Operadores Relacionais
![Page 10: Tipos, Literais, Operadores - DEINF/UFMAmario/grad/lp2/TiposOperadores.pdf · 3 Tipos, Literais, Operadores 5 Palavras reservadas zModificadores de Acesso zprivate, protected, public](https://reader030.vdocuments.net/reader030/viewer/2022032713/5c02897109d3f279018e4b54/html5/thumbnails/10.jpg)
10
Tipos, Literais, Operadores 19
Operadores Lógicos
Tipos, Literais, Operadores 20
Operadores orientados a bit
![Page 11: Tipos, Literais, Operadores - DEINF/UFMAmario/grad/lp2/TiposOperadores.pdf · 3 Tipos, Literais, Operadores 5 Palavras reservadas zModificadores de Acesso zprivate, protected, public](https://reader030.vdocuments.net/reader030/viewer/2022032713/5c02897109d3f279018e4b54/html5/thumbnails/11.jpg)
11
Tipos, Literais, Operadores 21
Operadores de Deslocamento
Tipos, Literais, Operadores 22
Operador Ternário (if-else)
![Page 12: Tipos, Literais, Operadores - DEINF/UFMAmario/grad/lp2/TiposOperadores.pdf · 3 Tipos, Literais, Operadores 5 Palavras reservadas zModificadores de Acesso zprivate, protected, public](https://reader030.vdocuments.net/reader030/viewer/2022032713/5c02897109d3f279018e4b54/html5/thumbnails/12.jpg)
12
Tipos, Literais, Operadores 23
Operador de Concatenação
Tipos, Literais, Operadores 24
instanceof
![Page 13: Tipos, Literais, Operadores - DEINF/UFMAmario/grad/lp2/TiposOperadores.pdf · 3 Tipos, Literais, Operadores 5 Palavras reservadas zModificadores de Acesso zprivate, protected, public](https://reader030.vdocuments.net/reader030/viewer/2022032713/5c02897109d3f279018e4b54/html5/thumbnails/13.jpg)
13
Tipos, Literais, Operadores 25
Tipos de dados
Tipos, Literais, Operadores 26
Conversão de tipos primitivos
![Page 14: Tipos, Literais, Operadores - DEINF/UFMAmario/grad/lp2/TiposOperadores.pdf · 3 Tipos, Literais, Operadores 5 Palavras reservadas zModificadores de Acesso zprivate, protected, public](https://reader030.vdocuments.net/reader030/viewer/2022032713/5c02897109d3f279018e4b54/html5/thumbnails/14.jpg)
14
Tipos, Literais, Operadores 27
Conversão de referências
Tipos, Literais, Operadores 28
Conversão de tipos primitivos
A linguagem Java não suporta a coerção arbitráriados tipos de variáveis, exceto no caso de concatenação de strings
Exemplolong bigval = 6; // 6 é um int, OKint smallval = 99L; // 99 é um tipo long, ilegalfloat x = 12.414F; // 12.414F é um tipo float, OK
float y = 12.414; // é um tipo double, ilegal
![Page 15: Tipos, Literais, Operadores - DEINF/UFMAmario/grad/lp2/TiposOperadores.pdf · 3 Tipos, Literais, Operadores 5 Palavras reservadas zModificadores de Acesso zprivate, protected, public](https://reader030.vdocuments.net/reader030/viewer/2022032713/5c02897109d3f279018e4b54/html5/thumbnails/15.jpg)
15
Tipos, Literais, Operadores 29
Conversão automáticaQualquer operação com dois ou mais operandos de tipos diferentes sofrerá promoção (conversão automática) ao tipo mais abrangente, que pode ser:
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 30
Conversão automáticaAs regras para conversão com tipos primitivos podem ser assim resumidas:
O tipo boolean não pode ser convertido para nenhum outro tipoOs 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
![Page 16: Tipos, Literais, Operadores - DEINF/UFMAmario/grad/lp2/TiposOperadores.pdf · 3 Tipos, Literais, Operadores 5 Palavras reservadas zModificadores de Acesso zprivate, protected, public](https://reader030.vdocuments.net/reader030/viewer/2022032713/5c02897109d3f279018e4b54/html5/thumbnails/16.jpg)
16
Tipos, Literais, Operadores 31
Coerção (cast)As variáveis podem ser convertidas em tipos maiores de maneira automática, mas não em tipos menores
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çãoEsse procedimento pode ser adotado, por exemplo, para “comprimir” um valor long em uma variável intNa coerção, o programador assume os riscos da conversão de dados
Tipos, Literais, Operadores 32
CoerçãoNão há risco de perda de informação na atribuição a seguir:
long L = 120; int i = L;
Mas o compilador acusará erro porque um long não pode ser atribuído a um int
Solução: int i = (int) L;
O operador de coerção tem maior precedência que os demais operadores
![Page 17: Tipos, Literais, Operadores - DEINF/UFMAmario/grad/lp2/TiposOperadores.pdf · 3 Tipos, Literais, Operadores 5 Palavras reservadas zModificadores de Acesso zprivate, protected, public](https://reader030.vdocuments.net/reader030/viewer/2022032713/5c02897109d3f279018e4b54/html5/thumbnails/17.jpg)
17
Tipos, Literais, Operadores 33
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);
}}
A execução de código provoca duas conversões. Em ambas ocorre perda de informação
Coerção - Exemplo
i = 00000001 00000000 00000001 00000001 (int (4 bytes) - valor: 16777473)
s = 00000001 00000000 00000001 00000001(short (2 bytes) - valor: 257)
b = 00000001 00000000 00000001 00000001(byte (1 byte) - valor: 1)
i = 00000001 00000000 00000001 00000001 (int (4 bytes) - valor: 16777473)
s = 00000001 00000000 00000001 00000001(short (2 bytes) - valor: 257)
b = 00000001 00000000 00000001 00000001(byte (1 byte) - valor: 1)
Tipos, Literais, Operadores 34
Coerção – Exemplo com objetos
Array v = new Array( );
v.add(“Hello”);
String s = (String)v.get(0);
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çãoCaso fosse feita a atribuição direta, teríamos um erro de compilação:
String s = v.get(0); // erro