2. Royalties
Estes slides foram inicialmente criados pelo prof.
Régis Pires (IFPI-Parnaíba) que gentilmente cedeu
para que algumas adaptações fossem feitas.
Ass. Nécio de Lima Veras (IFCE-Tianguá).
Prof. Nécio Veras
3. Tipos de Dados e Operadores
Identificadores
➔
Por convenção:
Nomes de variaveis iniciam com minúsculas e as palavras
subsequentes devem iniciar com maiúsculas.
• Ex: nome, nomeComposto, etc...
Nomes de classes iniciam com maiúsculas e as palavras
subsequentes também.
• Ex: Classe, ClasseComposta, etc...
Nomes de constantes são escritos em caixa alta e os
nomes compostos separados pelo caracter '_'.
• Ex: CONSTANTE, OUTRA_CONSTANTE
Prof. Nécio Veras
4. Comentários
➔ Comentário de linha (// ...)
➔ Comentário de Bloco (/* ... */)
...
/* comentário daqui,
ate aqui */
// declara a idade
int idade;
idade = 15;
// imprime a idade
System.out.println(idade);
...
Prof. Nécio Veras
5. Declaração e uso de variáveis
➔ Declaração
tipoDaVaríavel nomeDaVariável;
int idade;
Uso
idade = 15;
Prof. Nécio Veras
6. Inicialização de variáveis
...
//gera uma idade no ano seguinte
int idade = 15;
int idadeNoAnoQueVem;
idadeNoAnoQueVem = idade + 1;
...
Prof. Nécio Veras
7. Operadores Aritméticos
➔ +, -, / e *
➔ % (módulo)
Resto da divisão inteira.
...
int quatro = 2 + 2;
int tres = 5 – 2;
int oito = 4 * 2;
int dezesseis = 64 / 4;
int um = 5 % 2; // 5 dividido por 2 dá 2 e tem resto 1;
// o operador % pega o resto da divisão inteira
...
Prof. Nécio Veras
8. Tipos de Dados e Operadores
➔ Operadores
Aritméticos
adição (+), subtração (-)
multiplicação (*), divisão (/), resto (%)
incremento (++), decremento (--)
• a++; a--; ++a; --a
comparação (==, !=, <, <=, >, >=) produz boolean
Bit-a-bit (tipos inteiros e booleanos)
and (&), or (|), not (~)
deslocamento à esquerda (<<), à direita (>>)
Deslocamento à direita sem sinal (>>>)
Prof. Nécio Veras
9. Tipos de Dados e Operadores
➔ Operadores
Teste condicional (&& e ||)
Operam somente em expressões booleanas
Avaliados da esquerda para a direita
Implementam a técnica de curto-circuito
Exemplo
• a < b && c > d || e == f
Se “a < b” avalia para false, a subexpressão “&&” é false e a
avaliação de “c > d” não é realizada
Se ambos, “a < b” e “c > d” avaliam para true, a expressão
toda é true e a avaliação de “e == f” não é realizada
Prof. Nécio Veras
10. Tipos de Dados e Operadores
➔ Operadores
Atribuição (=)
Usado para atribuir um valor a uma variável
Pode ser usado em combinação com outros
operadores.
Se possível, a expressão do lado direito é convertida
para o tipo do operando do lado esquerdo.
Não faz conversões implícitas que resultam em perda
de dados.
• Tais conversões devem ser feitas via cast (conversão)
explícito.
Prof. Nécio Veras
11. Tipos de Dados e Operadores
➔ Operadores:
Atribuição com operação:
Um tipo especial de atribuição é feito juntando-se o operador
de atribuição com um dos operadores aritméticos e bit-a-bit.
Exemplo:
a += 1 // a = a + 1
a *= b // a = a * b
a |= b // a = a | b
...
Prof. Nécio Veras
12. Tipos de Dados e Operadores
➔ Operador ternário(if-else)
Operador que usa três argumentos:
boolean-exp ? value0 : value1
Se boolean-exp avaliar para true, a expressão value0 será o
resultado da expressão.
Se boolean-exp avaliar para false, a expressão value1 será o
resultado da expressão.
Exemplo:
int x, y;
String s, str;
...
x = y > 0 ? x / y : 0;
str = "Teste";
s = str != null ? s + str : s;
...
Prof. Nécio Veras
13. Tipos Primitivos
➔ double
Número com ponto flutuante.
double d = 3.14;
double x = 5 * 10;
➔ boolean
Verdadeiro ou falso.
boolean verdade = true;
➔ char
Um e apenas um caractere.
Caractere deve estar entre aspas simples.
char letra = 'a';
System.out.println(letra);
Prof. Nécio Veras
14. Tipos primitivos e valores
➔ Tipos primitivos guardam o real conteúdo da
variável.
➔ Ao usar o operador de atribuição =, o valor será
copiado.
int i = 5; // i recebe uma cópia do valor 5
int j = i; // j recebe uma cópia do valor de i
i = i + 1; // i vira 6, j continua 5
Prof. Nécio Veras
15. Tipos Primitivos
➔ Armazenam valores e não referências.
➔ Não necessitam de instanciação.
➔ Outros tipos primitivos:
byte, short, long e float.
➔ O tipo boolean tem 2 valores possíveis: true e false.
Prof. Nécio Veras
16. Casting e promoção
➔ Problema
int i;
double d, d2;
d = 3.1415;
i = d; // não compila
i = 3.14; // não compila
d = 5; // ok, double pode conter um inteiro
i = d; // não compila
// Quando há possibilidade de perda, a conversão
// não pode ser feita.
i = 5; // ok, pois não há perda de dados.
d2 = i; // ok
Prof. Nécio Veras
17. Tipos de Dados e Operadores
➔ Conversão de tipos
Java converterá um tipo de dados em outro sempre que
apropriado.
As conversões ocorrerão automaticamente quando houver
garantia de não haver perda de informação:
Tipos menores em tipos maiores;
Tipos de menor precisão em tipos de maior precisão;
Inteiros em ponto-flutuante.
Exemplo:
byte b = 10;
short s = b;
int i = s;
long l = i;
float f = l;
double b = f;
Prof. Nécio Veras
18. Casting
É o processo em que um tipo mais abrangente é moldado
(casted) para outro tipo menos abrangente, podendo haver algum
tipo de perda.
O cast não é feito automaticamente. O programador precisa defini-
lo explicitamente, assumindo os riscos de perda de informação.
É feito colocando-se o tipo desejado entre parênteses na frente da
expressão.
double d3 = 3.14;
int i = (int) d3;
No exemplo acima, d3 foi moldado como um int. O valor de i
agora é 3.
Prof. Nécio Veras
19. Casting
De long para int:
long x = 10000;
int i = x; // Não ok, pois pode perder dados.
Com o casting:
long x = 10000;
int i = (int) x;
Prof. Nécio Veras
20. Tipos de Dados e Operadores
➔ Promoção
Qualquer operação com dois ou mais operadores de tipos
diferentes sofrerá promoção, isto é, conversão automática
para o tipo mais abrangente
O maior ou mais preciso tipo da expressão
O tipo int (char, byte ou short)
Exemplo
int a = 10;
double d = a + 45F + 12D;
float e = (float) (a + 45F + 12D);
byte a = 9, b = 6;
short c = 7;
byte d = (byte) (a + b + c);
Prof. Nécio Veras
21. Casting
float x = 0.0; // Não compila
float x = 0.0f; // Ok.
// A letra f indica que o literal deve ser
// tratado como float.
long l = 0.0L;
// A letra L indica que o literal deve ser
// tratado como long.
double d = 5;
float f = 3;
float x = (float) d + f;
/* O Java faz as contas e vai armazenando sempre
no maior tipo que apareceu durante as operações.
No mínimo, o Java armazena um int,para fazer as
contas. Boolean não pode ser convertido para outro tipo.
*/ Prof. Nécio Veras
22. Exercício
➔ Quais dos identificadores abaixo são permitidos pela linguagem Java?
a. R a io X b. X P TO 123 c. V a lo r d a v e n d a
d. 1 P a u lo e. R 2D 2_ f. V e to r1 5
g. ZZZZZZ h. _3M i. _10V
j. _3B b k. R a io x l. 1_0_V
m . N /4 n. #M o. !s o m a
➔ Classifique os valores abaixo em double, int, char, String, boolean ou inválido:
a. 12 b. 1 2 .1 c. 1 2 ,0 d. V e rd a d e e. “ N é c io ”
f. '1 ' g. 8+4 h. -3 .7 i. M e n t ir a j. ‘N é c io ’
k. 3 .7 -- l. + + 1 ,3 7 m . 172F n. V e r d a d e ir o o. ‘N é c io ’+ ’V e r a s ’
p. “r” q. ‘C a s a ’ r. 2A s. F a ls o t. “ N é c io ” + ” V e r a s ”
u. .0 0 1 v. c in c o w . 1 /2 L x. 1 2 v e rd a d e s y. 1 + ’N ’
Prof. Nécio Veras
23. Exercício
➔ Sobre os Comandos de Atribuição, marque V para Verdadeiro e F para Falso nos seguintes comandos
de atribuição:
In t A , b , C , d , E ;
f lo a t R , M , S ;
char ch;
S t r in g T X T ;
( ) A = 1 0 .4 ; ( ) A = M ; ( ) B = C / 2 + D – E ; ( ) b = (B / 4 ) *S ; ( ) c := “N ”;
( ) A = 1 0 ,3 ; ( ) M = s *(b m o d 3 ); ( ) B = C / 2 – E ; ( ) b = (B / 4 ) *S ; ( ) c = “N E ”;
( ) c = ‘ b ’; ( ) A = R = d = 103; ( ) M = E ; ( ) TX T = c + 32; ( ) C h = c + ‘A ’;
( ) T = S; ( ) T X T := “ O la ” ; ( ) T = 10 m od 2; ( ) T X T = T + ‘A ’; ( ) c h = C * “1 ”;
( ) T = ‘S ’; ( ) T X T = O la ; ( ) T = (1 0 m o d 2 ); ( ) T X T = T + ‘A ’; ( ) C = “2 ”;
➔ Suponha que Numero é do tipo int, xCol e yCol são do tipo float, Classe é do tipo char e Achado do tipo
boolean. Determine quais das atribuições abaixo são válidas em Java e, se não forem válidas, explique
o porquê.
a . x C o l = 2 .1 7 8 ; b . 3 = N u m e ro ; c . C la s s e = 'B + + ' ;
d . N u m e ro = N u m e ro / 2 e . C la s s e = A ; f. A c h a d o = C la s s e ;
g . x C o l = y C o l + N u m e ro ; h . A c h a d o = tru e ; i. N u m e r o = x C o l;
j. x C o l = y c o l + x C o l; k . A c h a d o = ‘0 ’ ; l. C la s s e = “ C ” ;
Prof. Nécio Veras