Prof. Nécio de Lima Verashttp://lattes.cnpq.br/8284657916723590
Fundamentos da Linguagem Java
Prof. Nécio Veras
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
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
Comentários
➔ Comentário de linha (// ...)➔ Comentário de Bloco (/* ... */)
.../* comentário daqui,ate aqui */// declara a idadeint idade;idade = 15;// imprime a idadeSystem.out.println(idade);...
Prof. Nécio Veras
Declaração e uso de variáveis
➔ DeclaraçãotipoDaVaríavel nomeDaVariável;int idade;
Usoidade = 15;
Prof. Nécio Veras
Inicialização de variáveis
...//gera uma idade no ano seguinteint idade = 15;int idadeNoAnoQueVem;idadeNoAnoQueVem = idade + 1;...
Prof. Nécio Veras
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
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
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
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
Tipos de Dados e Operadores
a += 1 // a = a + 1a *= b // a = a * ba |= b // a = a | b...
➔ 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:
Prof. Nécio Veras
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
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
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 5int j = i; // j recebe uma cópia do valor de ii = i + 1; // i vira 6, j continua 5
Prof. Nécio Veras
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
Casting e promoção
➔ Problemaint i;double d, d2;d = 3.1415;i = d; // não compilai = 3.14; // não compilad = 5; // ok, double pode conter um inteiroi = 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
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
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
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
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
Casting
float x = 0.0; // Não compilafloat 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
Exercício
➔ Quais dos identificadores abaixo são permitidos pela linguagem Java?
➔ Classifique os valores abaixo em double, int, char, String, boolean ou inválido:
a . R a i o X b . X P T O 1 2 3 c . V a l o r d a v e n d a d . 1 P a u l o e . R 2 D 2 _ f . V e t o r 1 5 g . Z Z Z Z Z Z h . _ 3 M i . _ 1 0 V
j . _ 3 B b k . R a i o x l . 1 _ 0 _ V
m . N / 4 n . # M o . ! s o m a
a . 1 2 b . 1 2 . 1 c . 1 2 , 0 d . V e r d a d e e . “ N é c i o ”
f . ' 1 ' g . 8 + 4 h . - 3 . 7 i . M e n t i r a j . ‘ N é c i o ’
k . 3 . 7 - - l . + + 1 , 3 7 m . 1 7 2 F n . V e r d a d e i r o o . ‘ N é c i o ’ + ’ V e r a s ’
p . “ r ” q . ‘ C a s a ’ r . 2 A s . F a l s o t . “ N é c i o ” + ” V e r a s ”
u . . 0 0 1 v . c i n c o w . 1 / 2 L x . 1 2 v e r d a d e s y . 1 + ’ N ’
Prof. Nécio Veras
Exercício
➔ Sobre os Comandos de Atribuição, marque V para Verdadeiro e F para Falso nos seguintes comandos de atribuição:
➔ 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ê.
I n t A , b , C , d , E ;
f l o a t R , M , S ;
c h a r c h ;
S t r i n 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 = 1 0 3 ; ( ) M = E ; ( ) T X T = c + 3 2 ; ( ) C h = c + ‘ A ’ ;
( ) T = S ; ( ) T X T : = “ O l a ” ; ( ) T = 1 0 m o d 2 ; ( ) T X T = T + ‘ A ’ ; ( ) c h = C * “ 1 ” ;
( ) T = ‘ S ’ ; ( ) T X T = O l a ; ( ) T = ( 1 0 m o d 2 ) ; ( ) T X T = T + ‘ A ’ ; ( ) C = “ 2 ” ;
a . x C o l = 2 . 1 7 8 ; b . 3 = N u m e r o ; c . C l a s s e = ' B + + ' ;
d . N u m e r o = N u m e r o / 2 e . C l a s s e = A ; f . A c h a d o = C l a s s e ;
g . x C o l = y C o l + N u m e r o ; h . A c h a d o = t r u 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 l a s s e = “ C ” ;
Recommended