SlideShare uma empresa Scribd logo
Tipo, literais, operadores e fluxo de controle JSE JAVA ESSENCIAL
Operadores e controle de fluxo da execução Explorar as estruturas procedurais da linguagem Java Operadores Aritméticos, lógicos, binários, booleanos, de   deslocamento, de concatenação, de conversão Conversão de tipos Promoção Coerção (cast) Estruturas de controle de execução if-else, for, while, do-while break, continue, rótulos switch (case)
Operadores   Um operador produz um novo valor a partir de um ou mais  argumentos Os operadores em Java são praticamente os mesmos encontrados em outras linguagens +, -, /, *, =, ==, <, >, >=, &&, etc. A maior parte dos operadores só trabalha com valores de tipos primitivos. Exceções: +  e  +=  são usados na concatenação de strings != ,  =  e  ==  são usados também com objetos (embora não  funcionem da mesma forma quanto aos valores armazenados nos objetos )
Lista de operadores do Java
Precedência A precedência determina em que ordem as operações em uma expressão serão realizadas. Por exemplo, operações de multiplicação são realizadas  antes de operações de soma: int x = 2 + 2 * 3 – 9 / 3;  // 2+6–3 = 5 Parênteses podem ser usados para sobrepor a precedência int x = (2 + 2) * (3 – 9) / 3;  // 4*(– 6)/3 = – 8 A maior parte das expressões de mesma precedência é  calculada da esquerda para a direita int y = 13 + 2 + 4 + 6;  // (((13 + 2) + 4) + 6) Há exceções. Por exemplo, atribuição.
Tabela de precedência
Literais de caracteres em Java
Atribuição A atribuição é realizada com o operador ‘=‘ ‘ =‘ serve apenas para atribuição – não pode ser usado em  comparações (que usa ‘==‘)! Copia o valor da variável ou constante do lado direito para a variável do lado esquerdo. x = 13;  // copia a constante inteira 13 para x y = x;  // copia o valor contido em x para y A atribuição copia  valores O valor armazenado em uma variável de tipo primitivo é o  valor do número, caractere ou literal booleana (true ou false) O valor armazenado em uma variável de tipo de  classe(referência para objeto) é o  ponteiro  para o objeto ou  null. Conseqüentemente, copiar referências por atribuição  não  copia   objetos  mas apenas cria novas referências para o  mesmo objeto!
Variáveis de tipos primitivos Pilha após linha 2  Pilha após linha 3 Referências de objetos Após linha 6 Passagem de valores via atribuição (...) 1: char letraPri = 'a'; 2: char letraPri2 = letraPri; 3: letraPri = 'b'; (...) (...) 4: Letra letraObj = new Letra(); 5: letraObj.c = 'a'; 6: Letra letraObj2 = letraObj; 7: letraObj2.c = 'b'; (...) public class  Letra  { public char c; }
Operadores matemáticos + adição -   subtração *   multiplicação /   divisão %   módulo (resto) Operadores unários -n   e  +n   (ex: -23) (em uma expressão: 13 +  -12 ) Melhor usar parênteses: 13 +  (-12) Atribuição com operação +=, -=, *=, /=, %= x = x + 1  equivale a   x += 1
Incremento e decremento Exemplo int a = 10; int b = 5; Incrementa ou decrementa antes de usar a variável int x = ++a;  // a contém 11, x contém 11 int y = --b;  // b contém 4, y contém 4 A atribuição foi feita DEPOIS! Incrementa ou decrementa depois de usar a variável int x = a++;  // a contém 11, x contém 10 int y = b--;  // b contém 4, y contém 5 A atribuição foi feita ANTES!
Operadores relacionais == igual != diferente <   menor <= menor ou igual >   maior >= maior ou igual Sempre produzem um resultado booleano true   ou  false Comparam os valores de duas variáveis ou de  uma variável e uma constante Comparam as referências de objetos (apenas == e !=)
Operadores lógicos && E (and) || OU (or) !   Negação (not) Produzem sempre um valor booleano true   ou  false Argumentos precisam ser valores booleanos ou expressões  com resultado booleano Por exemplo:  (3 > x) && !(y <= 10) Expressão será realizada até que o resultado possa ser  determinado de forma não ambígua “ short-circuit” Exemplo: ( false && <qualquer coisa> ) A expressão  <qualquer coisa>  não será calculada
Operadores orientados a bit & and | or ^   xor (ou exclusivo) ~   not Para operações em baixo nível (bit por bit) Operam com inteiros e resultados são números inteiros Se argumentos forem booleanos, resultado será igual ao  obtido com operadores booleanos, mas sem ‘curto-  circuito’ Suportam atribuição conjunta:  &=, |= ou ^=
Operadores de deslocamento <<   deslocamento de bit à esquerda (multiplicação por dois) >>   deslocamento de bit à direita (divisão truncada por dois) >>>  deslocamento à direita sem considerar sinal (acrescenta zeros) Para operações em baixo nível (bit a bit) Operam sobre inteiros e inteiros longos Tipos menores ( short e byte ) são convertidos a int antes de  realizar operação  Podem ser combinados com atribuição:  <<= ,  >>=  ou  >>>=
Operador tenário (if-else) Retorna um valor ou outro dependendo do resultado  de uma expressão booleana variavel = expressão  ?  valor, se true   :  valor, se false; Exemplo: int x = (y != 0)  ?  50  :  500; String tit = (sex == 'f')  ?  &quot;Sra.&quot;  :  &quot;Sr num + &quot; pagina&quot; + (num != 1)  ?  &quot;s&quot;  :  &quot;“ Use com cuidado Pode levar a código difícil de entender
Operador de concatenação Em uma operação usando &quot;+&quot; com dois operandos, se  um deles for String, o outro será convertido para  String e ambos serão concatenados A operação de concatenação, assim como a de adição, ocorre da direita para a esquerda String s = 1 + 2 + 3 + &quot;=&quot; + 4 + 5 + 6; Resultado:  s  contém a String  &quot;6=456&quot;
instanceof instanceof é um operador usado para comparar uma  referência com uma classe A expressão será  true  se a referência for do tipo de  uma classe ou subclasse testada e  false , caso  contrário Sintaxe: referência  instanceof  Classe Exemplo: if (obj  instanceof  Point) { System.out.println(&quot;Descendente de Point&quot;); }
Tipos de dados
Conversão de tipos primitivos Java converterá um tipo de dados em outro sempre que isto for 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 Tipos Inteiros em ponto-flutuante Conversões automáticas byte short int char long float double byte b = 10; char c=‘A’; short s = 20; float f= 12.3f; int i = 100; long m = 200L; double d=12.3;
Conversão de referências Pode-se atribuir uma referência A a uma outra referência B de  um tipo diferente, desde que B seja uma  superclasse  (direta ou indireta) de A: Qualquer referência pode ser atribuída a uma referência da  classe Object B seja uma  interface  implementada por A: mais detalhes  sobre interfaces em aulas futuras class  Carro  extends  Veiculo  {...} class  Veiculo  implements  Dirigivel  {} class  Porsche  extends  Carro  {...}
Operadores de coerção Na coerção (cast), o  programador  assume os riscos da conversão de dados No tipo byte cabem inteiros até 127 No tipo short cabem inteiros até 32767 Não há risco de perda de informação na atribuição a seguir short s = 100; byte b = s; (pois 100 cabe em byte) mas o compilador acusará erro  porque um short não pode ser atribuído a byte. Solução byte b = (byte) s; O programador &quot;assume o risco&quot;, declarando entre parênteses,  que o conteúdo de  s   cabe em  byte . O operador de coerção tem maior precedência que os outros operadores! operador de coerção (cast)
Promoção Qualquer operação com dois ou mais operandos de tipos  diferentes sofrerá  promoção , isto é, 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) O tipo  String  (no caso de concatenações) - (na verdade  isto não é uma promoção ) Exemplos String s = 13 - 9 * 16 +  &quot;4&quot; + 9 + 2;   // &quot;-131 492 &quot; double d = 12 + 9L + 12.3;  // tudo é promovido p/ double byte b = 9; byte c = 10; byte d = 12; byte x = (byte) (b + c + d); a partir daqui só o sinal '+' é permitido! cast é essencial aqui! Observe os parênteses! promovidos para int!
Controle de execução O controle do fluxo da execução em Java utiliza os mesmos  comandos existentes em outras linguagens Repetição:  for, while, do-while Seleção:  if-else, switch-case Desvios (somente em estruturas de repetição):  continue, break , rótulos Não existe comando  goto goto , porém, é palavra-reservada.
true e false Todas as expressões condicionais usadas nas estruturas  for ,  if-  else,   while  e  do-while  são expressões booleanas O resultado das expressões deve ser sempre true ou false Não há conversões automáticas envolvendo booleanos em Java (evita erros de programação comuns em C/C++)
if-else Sintaxe Exemplo
return A palavra-chave  return  tem duas finalidades Especifica o que um método irá retornar (se o método não  tiver sido declarado com tipo de retorno  void ) Causa o retorno imediato à linha de controle imediatamente  posterior à chamada do método Exemplos de sintaxe: Este exemplo funciona como um  if  com  else :
While e do-while Sintaxe Exemplo loop infinito
for Sintaxe Exemplo loop infinito
break e continue break : interrompe a execução do bloco de repetição. Continua com a próxima instrução, logo após o bloco . continue : interrompe a execução da iteração Testa a condição e reinicia o bloco com a próxima iteração .
break e continue com rótulos break e continue  sempre atuam sobre o bloco de repetição  onde são chamados Em blocos de repetição contidos em outros blocos, pode-se usar  rótulos   para fazer  break  e continue atuarem em blocos  externos Os rótulos só podem ser usados antes de do,  while  e  for As chamadas só podem ocorrer dentro de blocos de repetição. Exemplo: Sintaxe ident:  do  {...} ou ident:  while  () {...} ou ident:  for  () { ...}
switch (case) Sintaxe Exemplo qualquer expressão que resulte em valor inteiro (incl. char) Char letra

Mais conteúdo relacionado

PDF
Resumo tipo primitivo_java
Marcos Souza
 
PDF
Guia rapido java v2
Mario Jorge Pereira
 
PDF
Guia Rápido de Referência Java
Mario Jorge Pereira
 
PDF
Pseudocódigo ou Portugol (Lógica de Programação)
Gercélia Ramos
 
PPTX
02 controle de fluxo
Artur Todeschini
 
PPT
Ud3
guesta1a5446
 
PPTX
Poo1 aula 4 - tipos de dados variáveis-constantes
Denis Sobrenome
 
PPTX
JAVA - Introdução
Elaine Cecília Gatto
 
Resumo tipo primitivo_java
Marcos Souza
 
Guia rapido java v2
Mario Jorge Pereira
 
Guia Rápido de Referência Java
Mario Jorge Pereira
 
Pseudocódigo ou Portugol (Lógica de Programação)
Gercélia Ramos
 
02 controle de fluxo
Artur Todeschini
 
Poo1 aula 4 - tipos de dados variáveis-constantes
Denis Sobrenome
 
JAVA - Introdução
Elaine Cecília Gatto
 

Mais procurados (20)

PPTX
Poo1 aula 6 - conversão de tipos primitivos
Denis Sobrenome
 
PDF
Fundamentos do java
Nécio de Lima Veras
 
PDF
Compiladores 3
Ivan Ricarte
 
PPT
Logica Algoritmo 05 Repeticao
Regis Magalhães
 
PPT
Cet P Sistemas Linguagem C Introducao
mmind
 
PDF
Revisão sobre ponteiros em C
Pablo Silva
 
PPT
Introdução a Linguagem C
apolllorj
 
PPTX
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
Manuel Menezes de Sequeira
 
PPTX
Fundamentos de C#
Ângela Vitorino
 
PPTX
Linguagem C - Ponteiros
Elaine Cecília Gatto
 
PDF
Algoritmos - capítulo 6
Carlos Padilla Severo
 
PDF
Curso de OO com C# - Parte 02 - Introdução ao C#
Leonardo Melo Santos
 
PPTX
PHP: operadores e variáveis (TGPSI)
Agrupamento de Escolas da Batalha
 
PDF
Apostila c++
Sergio Finamore
 
PDF
Aula6 - Linguagem C
apolllorj
 
PDF
Mini Curso Java Day(Eliane Raquel)
raquelcarsi
 
PPTX
Interface
Artur Todeschini
 
PDF
Aula de C e C++
Maurício Moreira Neto
 
PDF
Algoritmos e lp parte 5-subalgoritmos
Mauro Pereira
 
PPT
Linguagens de Programação II - Aula 3
guestd6da1cd
 
Poo1 aula 6 - conversão de tipos primitivos
Denis Sobrenome
 
Fundamentos do java
Nécio de Lima Veras
 
Compiladores 3
Ivan Ricarte
 
Logica Algoritmo 05 Repeticao
Regis Magalhães
 
Cet P Sistemas Linguagem C Introducao
mmind
 
Revisão sobre ponteiros em C
Pablo Silva
 
Introdução a Linguagem C
apolllorj
 
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
Manuel Menezes de Sequeira
 
Fundamentos de C#
Ângela Vitorino
 
Linguagem C - Ponteiros
Elaine Cecília Gatto
 
Algoritmos - capítulo 6
Carlos Padilla Severo
 
Curso de OO com C# - Parte 02 - Introdução ao C#
Leonardo Melo Santos
 
PHP: operadores e variáveis (TGPSI)
Agrupamento de Escolas da Batalha
 
Apostila c++
Sergio Finamore
 
Aula6 - Linguagem C
apolllorj
 
Mini Curso Java Day(Eliane Raquel)
raquelcarsi
 
Interface
Artur Todeschini
 
Aula de C e C++
Maurício Moreira Neto
 
Algoritmos e lp parte 5-subalgoritmos
Mauro Pereira
 
Linguagens de Programação II - Aula 3
guestd6da1cd
 
Anúncio

Semelhante a Java - Aula 08 (20)

PDF
Tipos, literais, operadoes e controle de fluxo
Denis L Presciliano
 
PDF
Tipos, literais, operadoes e controle de fluxo
Denis L Presciliano
 
PDF
Java 05
samuelthiago
 
PDF
Aula 03 - Definições da linguagem Java
Daniel Brandão
 
ODP
Java 03 Tipos Dados Operadores
Regis Magalhães
 
PPTX
Curso Básico de Java - Aula 10
PeslPinguim
 
PPTX
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Cristiano Almeida
 
PPTX
Curso de Java - Antonio Alves - Aula 02
Antonio Alves
 
PDF
Programação Orientada a Objetos - 001
José Volmei Dal Prá Junior
 
PPT
Operadores Java
Raphael Marques
 
PPTX
Curso de Java Capítulo 2 - Aprendendo Novas Técnicas
plustecnologiaro
 
PDF
POO - 07 - Operadores do Java
Ludimila Monjardim Casagrande
 
PDF
AulaJava02_VarOperadoresEstContinuação.pdf
willenmhara
 
PPT
Módulo 2 - Conceitos básicos sobre algoritmos.ppt
ruanmigueldrdg
 
PPTX
Google android p/ Noobs - SUPER 2014 - UPE
Levi Saturnino
 
PDF
Unidade06
Ialis Cavalcante
 
PDF
Linguagem de Programação Estruturada com Java-Aula2
Elvis Araújo
 
PDF
Java e orientação a objetos - aula 01
John Godoi
 
PPT
ASP.Net Módulo 2
michellobo
 
PPT
ASPECTOS DE FUNDAÇÃO AGROPECUARIA DE COMPUTAÇÃO
AlexandreMunizoliv
 
Tipos, literais, operadoes e controle de fluxo
Denis L Presciliano
 
Tipos, literais, operadoes e controle de fluxo
Denis L Presciliano
 
Java 05
samuelthiago
 
Aula 03 - Definições da linguagem Java
Daniel Brandão
 
Java 03 Tipos Dados Operadores
Regis Magalhães
 
Curso Básico de Java - Aula 10
PeslPinguim
 
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Cristiano Almeida
 
Curso de Java - Antonio Alves - Aula 02
Antonio Alves
 
Programação Orientada a Objetos - 001
José Volmei Dal Prá Junior
 
Operadores Java
Raphael Marques
 
Curso de Java Capítulo 2 - Aprendendo Novas Técnicas
plustecnologiaro
 
POO - 07 - Operadores do Java
Ludimila Monjardim Casagrande
 
AulaJava02_VarOperadoresEstContinuação.pdf
willenmhara
 
Módulo 2 - Conceitos básicos sobre algoritmos.ppt
ruanmigueldrdg
 
Google android p/ Noobs - SUPER 2014 - UPE
Levi Saturnino
 
Unidade06
Ialis Cavalcante
 
Linguagem de Programação Estruturada com Java-Aula2
Elvis Araújo
 
Java e orientação a objetos - aula 01
John Godoi
 
ASP.Net Módulo 2
michellobo
 
ASPECTOS DE FUNDAÇÃO AGROPECUARIA DE COMPUTAÇÃO
AlexandreMunizoliv
 
Anúncio

Mais de Tiago da Silva Ramos (8)

PDF
Struts - Aula 03
Tiago da Silva Ramos
 
PDF
Curso Struts - Aula 02
Tiago da Silva Ramos
 
PDF
Struts - Aula 01
Tiago da Silva Ramos
 
PDF
Hibernate - Aula 04
Tiago da Silva Ramos
 
PPT
Hibernate - Aula 03
Tiago da Silva Ramos
 
PPT
Hibernate - Aula 01
Tiago da Silva Ramos
 
PPT
Hibernate - Aula 02
Tiago da Silva Ramos
 
Struts - Aula 03
Tiago da Silva Ramos
 
Curso Struts - Aula 02
Tiago da Silva Ramos
 
Struts - Aula 01
Tiago da Silva Ramos
 
Hibernate - Aula 04
Tiago da Silva Ramos
 
Hibernate - Aula 03
Tiago da Silva Ramos
 
Hibernate - Aula 01
Tiago da Silva Ramos
 
Hibernate - Aula 02
Tiago da Silva Ramos
 

Último (7)

PPTX
Gestão de Mudanças - Fases do processo de mudança organizacional
Gateware Group
 
PPTX
Desenvolvimento-de-Produtos-Inovadores.pptx
ssuser1d7565
 
PPTX
aplicativopenseira.pptx Aplicativo que organiza Pensamentos - Peça Publicitária
StelaNorie1
 
PPTX
Computacao-e-Tecnologias-Digitais-Por-Que-Aprender.pptx
RobertaOliveiradaFon1
 
PPTX
Gestão de Mudanças - Os maiores desafios da Gestão de Mudanças e Gestão de Pr...
Gateware Group
 
PDF
Certificado em Redes Neurais Artificiais em Python
CaioSilva506151
 
PDF
Explorando o Futuro do Corpo: Implantes Neurais e o Biohacking dos Sentidos
cooperliora
 
Gestão de Mudanças - Fases do processo de mudança organizacional
Gateware Group
 
Desenvolvimento-de-Produtos-Inovadores.pptx
ssuser1d7565
 
aplicativopenseira.pptx Aplicativo que organiza Pensamentos - Peça Publicitária
StelaNorie1
 
Computacao-e-Tecnologias-Digitais-Por-Que-Aprender.pptx
RobertaOliveiradaFon1
 
Gestão de Mudanças - Os maiores desafios da Gestão de Mudanças e Gestão de Pr...
Gateware Group
 
Certificado em Redes Neurais Artificiais em Python
CaioSilva506151
 
Explorando o Futuro do Corpo: Implantes Neurais e o Biohacking dos Sentidos
cooperliora
 

Java - Aula 08

  • 1. Tipo, literais, operadores e fluxo de controle JSE JAVA ESSENCIAL
  • 2. Operadores e controle de fluxo da execução Explorar as estruturas procedurais da linguagem Java Operadores Aritméticos, lógicos, binários, booleanos, de deslocamento, de concatenação, de conversão Conversão de tipos Promoção Coerção (cast) Estruturas de controle de execução if-else, for, while, do-while break, continue, rótulos switch (case)
  • 3. Operadores Um operador produz um novo valor a partir de um ou mais argumentos Os operadores em Java são praticamente os mesmos encontrados em outras linguagens +, -, /, *, =, ==, <, >, >=, &&, etc. A maior parte dos operadores só trabalha com valores de tipos primitivos. Exceções: + e += são usados na concatenação de strings != , = e == são usados também com objetos (embora não funcionem da mesma forma quanto aos valores armazenados nos objetos )
  • 5. Precedência A precedência determina em que ordem as operações em uma expressão serão realizadas. Por exemplo, operações de multiplicação são realizadas antes de operações de soma: int x = 2 + 2 * 3 – 9 / 3; // 2+6–3 = 5 Parênteses podem ser usados para sobrepor a precedência int x = (2 + 2) * (3 – 9) / 3; // 4*(– 6)/3 = – 8 A maior parte das expressões de mesma precedência é calculada da esquerda para a direita int y = 13 + 2 + 4 + 6; // (((13 + 2) + 4) + 6) Há exceções. Por exemplo, atribuição.
  • 8. Atribuição A atribuição é realizada com o operador ‘=‘ ‘ =‘ serve apenas para atribuição – não pode ser usado em comparações (que usa ‘==‘)! Copia o valor da variável ou constante do lado direito para a variável do lado esquerdo. x = 13; // copia a constante inteira 13 para x y = x; // copia o valor contido em x para y A atribuição copia valores O valor armazenado em uma variável de tipo primitivo é o valor do número, caractere ou literal booleana (true ou false) O valor armazenado em uma variável de tipo de classe(referência para objeto) é o ponteiro para o objeto ou null. Conseqüentemente, copiar referências por atribuição não copia objetos mas apenas cria novas referências para o mesmo objeto!
  • 9. Variáveis de tipos primitivos Pilha após linha 2 Pilha após linha 3 Referências de objetos Após linha 6 Passagem de valores via atribuição (...) 1: char letraPri = 'a'; 2: char letraPri2 = letraPri; 3: letraPri = 'b'; (...) (...) 4: Letra letraObj = new Letra(); 5: letraObj.c = 'a'; 6: Letra letraObj2 = letraObj; 7: letraObj2.c = 'b'; (...) public class Letra { public char c; }
  • 10. Operadores matemáticos + adição - subtração * multiplicação / divisão % módulo (resto) Operadores unários -n e +n (ex: -23) (em uma expressão: 13 + -12 ) Melhor usar parênteses: 13 + (-12) Atribuição com operação +=, -=, *=, /=, %= x = x + 1 equivale a x += 1
  • 11. Incremento e decremento Exemplo int a = 10; int b = 5; Incrementa ou decrementa antes de usar a variável int x = ++a; // a contém 11, x contém 11 int y = --b; // b contém 4, y contém 4 A atribuição foi feita DEPOIS! Incrementa ou decrementa depois de usar a variável int x = a++; // a contém 11, x contém 10 int y = b--; // b contém 4, y contém 5 A atribuição foi feita ANTES!
  • 12. Operadores relacionais == igual != diferente < menor <= menor ou igual > maior >= maior ou igual Sempre produzem um resultado booleano true ou false Comparam os valores de duas variáveis ou de uma variável e uma constante Comparam as referências de objetos (apenas == e !=)
  • 13. Operadores lógicos && E (and) || OU (or) ! Negação (not) Produzem sempre um valor booleano true ou false Argumentos precisam ser valores booleanos ou expressões com resultado booleano Por exemplo: (3 > x) && !(y <= 10) Expressão será realizada até que o resultado possa ser determinado de forma não ambígua “ short-circuit” Exemplo: ( false && <qualquer coisa> ) A expressão <qualquer coisa> não será calculada
  • 14. Operadores orientados a bit & and | or ^ xor (ou exclusivo) ~ not Para operações em baixo nível (bit por bit) Operam com inteiros e resultados são números inteiros Se argumentos forem booleanos, resultado será igual ao obtido com operadores booleanos, mas sem ‘curto- circuito’ Suportam atribuição conjunta: &=, |= ou ^=
  • 15. Operadores de deslocamento << deslocamento de bit à esquerda (multiplicação por dois) >> deslocamento de bit à direita (divisão truncada por dois) >>> deslocamento à direita sem considerar sinal (acrescenta zeros) Para operações em baixo nível (bit a bit) Operam sobre inteiros e inteiros longos Tipos menores ( short e byte ) são convertidos a int antes de realizar operação Podem ser combinados com atribuição: <<= , >>= ou >>>=
  • 16. Operador tenário (if-else) Retorna um valor ou outro dependendo do resultado de uma expressão booleana variavel = expressão ? valor, se true : valor, se false; Exemplo: int x = (y != 0) ? 50 : 500; String tit = (sex == 'f') ? &quot;Sra.&quot; : &quot;Sr num + &quot; pagina&quot; + (num != 1) ? &quot;s&quot; : &quot;“ Use com cuidado Pode levar a código difícil de entender
  • 17. Operador de concatenação Em uma operação usando &quot;+&quot; com dois operandos, se um deles for String, o outro será convertido para String e ambos serão concatenados A operação de concatenação, assim como a de adição, ocorre da direita para a esquerda String s = 1 + 2 + 3 + &quot;=&quot; + 4 + 5 + 6; Resultado: s contém a String &quot;6=456&quot;
  • 18. instanceof instanceof é um operador usado para comparar uma referência com uma classe A expressão será true se a referência for do tipo de uma classe ou subclasse testada e false , caso contrário Sintaxe: referência instanceof Classe Exemplo: if (obj instanceof Point) { System.out.println(&quot;Descendente de Point&quot;); }
  • 20. Conversão de tipos primitivos Java converterá um tipo de dados em outro sempre que isto for 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 Tipos Inteiros em ponto-flutuante Conversões automáticas byte short int char long float double byte b = 10; char c=‘A’; short s = 20; float f= 12.3f; int i = 100; long m = 200L; double d=12.3;
  • 21. Conversão de referências Pode-se atribuir uma referência A a uma outra referência B de um tipo diferente, desde que B seja uma superclasse (direta ou indireta) de A: Qualquer referência pode ser atribuída a uma referência da classe Object B seja uma interface implementada por A: mais detalhes sobre interfaces em aulas futuras class Carro extends Veiculo {...} class Veiculo implements Dirigivel {} class Porsche extends Carro {...}
  • 22. Operadores de coerção Na coerção (cast), o programador assume os riscos da conversão de dados No tipo byte cabem inteiros até 127 No tipo short cabem inteiros até 32767 Não há risco de perda de informação na atribuição a seguir short s = 100; byte b = s; (pois 100 cabe em byte) mas o compilador acusará erro porque um short não pode ser atribuído a byte. Solução byte b = (byte) s; O programador &quot;assume o risco&quot;, declarando entre parênteses, que o conteúdo de s cabe em byte . O operador de coerção tem maior precedência que os outros operadores! operador de coerção (cast)
  • 23. Promoção Qualquer operação com dois ou mais operandos de tipos diferentes sofrerá promoção , isto é, 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) O tipo String (no caso de concatenações) - (na verdade isto não é uma promoção ) Exemplos String s = 13 - 9 * 16 + &quot;4&quot; + 9 + 2; // &quot;-131 492 &quot; double d = 12 + 9L + 12.3; // tudo é promovido p/ double byte b = 9; byte c = 10; byte d = 12; byte x = (byte) (b + c + d); a partir daqui só o sinal '+' é permitido! cast é essencial aqui! Observe os parênteses! promovidos para int!
  • 24. Controle de execução O controle do fluxo da execução em Java utiliza os mesmos comandos existentes em outras linguagens Repetição: for, while, do-while Seleção: if-else, switch-case Desvios (somente em estruturas de repetição): continue, break , rótulos Não existe comando goto goto , porém, é palavra-reservada.
  • 25. true e false Todas as expressões condicionais usadas nas estruturas for , if- else, while e do-while são expressões booleanas O resultado das expressões deve ser sempre true ou false Não há conversões automáticas envolvendo booleanos em Java (evita erros de programação comuns em C/C++)
  • 27. return A palavra-chave return tem duas finalidades Especifica o que um método irá retornar (se o método não tiver sido declarado com tipo de retorno void ) Causa o retorno imediato à linha de controle imediatamente posterior à chamada do método Exemplos de sintaxe: Este exemplo funciona como um if com else :
  • 28. While e do-while Sintaxe Exemplo loop infinito
  • 29. for Sintaxe Exemplo loop infinito
  • 30. break e continue break : interrompe a execução do bloco de repetição. Continua com a próxima instrução, logo após o bloco . continue : interrompe a execução da iteração Testa a condição e reinicia o bloco com a próxima iteração .
  • 31. break e continue com rótulos break e continue sempre atuam sobre o bloco de repetição onde são chamados Em blocos de repetição contidos em outros blocos, pode-se usar rótulos para fazer break e continue atuarem em blocos externos Os rótulos só podem ser usados antes de do, while e for As chamadas só podem ocorrer dentro de blocos de repetição. Exemplo: Sintaxe ident: do {...} ou ident: while () {...} ou ident: for () { ...}
  • 32. switch (case) Sintaxe Exemplo qualquer expressão que resulte em valor inteiro (incl. char) Char letra