fundamentos do java

23
Prof. Nécio de Lima Veras http://lattes.cnpq.br/8284657916723590  Fundamentos da Linguagem Java

Upload: necio-de-lima-veras

Post on 27-May-2015

377 views

Category:

Documents


60 download

TRANSCRIPT

Page 1: Fundamentos do java

Prof. Nécio de Lima Verashttp://lattes.cnpq.br/8284657916723590

   

Fundamentos da Linguagem Java

Page 2: Fundamentos do 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á).

Page 3: Fundamentos do java

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

Page 4: Fundamentos do java

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);...

Page 5: Fundamentos do java

Prof. Nécio Veras

Declaração e uso de variáveis

➔ DeclaraçãotipoDaVaríavel nomeDaVariável;int idade;

Usoidade = 15;

Page 6: Fundamentos do java

Prof. Nécio Veras

Inicialização de variáveis

...//gera uma idade no ano seguinteint idade = 15;int idadeNoAnoQueVem;idadeNoAnoQueVem = idade + 1;...

Page 7: Fundamentos do java

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

...

Page 8: Fundamentos do java

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 (>>>)

Page 9: Fundamentos do java

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

Page 10: Fundamentos do java

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.

Page 11: Fundamentos do java

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:

Page 12: Fundamentos do java

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;...

Page 13: Fundamentos do java

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);

Page 14: Fundamentos do java

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

Page 15: Fundamentos do java

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.

Page 16: Fundamentos do java

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

Page 17: Fundamentos do java

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;

Page 18: Fundamentos do java

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.

Page 19: Fundamentos do java

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;

Page 20: Fundamentos do java

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);

Page 21: Fundamentos do java

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. */

Page 22: Fundamentos do java

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 ’

Page 23: Fundamentos do java

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 ” ;