SlideShare uma empresa Scribd logo
Fundamentos da Linguagem Java




                   
                                     Prof. Nécio de Lima Veras
                      http://lattes.cnpq.br/8284657916723590
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 idade
    int idade;
    idade = 15;
    // imprime a idade
    System.out.println(idade);
    ...
                                      Prof. Nécio Veras
Declaração e uso de variáveis


➔   Declaração
    tipoDaVaríavel nomeDaVariável;
    int idade;
Uso
    idade = 15;




                                        Prof. Nécio Veras
Inicialização de variáveis


...
//gera uma idade no ano seguinte
int 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


➔   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
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 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
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


➔   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
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 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
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
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

Mais conteúdo relacionado

PDF
Introdução ao Python
PDF
Aula 1 - Introdução a POO
PDF
Gerenciamento de Projetos - Aula01 - Uma Introdução ao Gerenciamento de Projetos
PDF
Introdução ao Teste de Software - Uma abordagem prática
PPTX
Modelo cascata
PPT
Java modulo 01 - Introdução
PDF
[slides] Planejamento, Execução e Controle de Projetos (2015: 2º semestre)
PPTX
Aula - Metodologias Ágeis
Introdução ao Python
Aula 1 - Introdução a POO
Gerenciamento de Projetos - Aula01 - Uma Introdução ao Gerenciamento de Projetos
Introdução ao Teste de Software - Uma abordagem prática
Modelo cascata
Java modulo 01 - Introdução
[slides] Planejamento, Execução e Controle de Projetos (2015: 2º semestre)
Aula - Metodologias Ágeis

Mais procurados (20)

PPTX
Extreme programming (xp) - Resumo
PDF
Aula 4 - Teste de mesa
PPSX
Plano de carreira Estrutura para área de Vendas - v.1
PDF
Introdução a Linguagem Java
PPT
Prototipação de software
PDF
Aula 2 - POO: Fundamentos da linguagem Java
PPTX
As vantagens e desvantagens da aplicação de padrões de projeto
PDF
Fluxograma (Lógica de Programação)
PPTX
Fundamentos da Engenharia de Software
PDF
Aula 2 - Processos de Software
PDF
Arquitetura de Software
PDF
Aula 4 - Estruturas condicionais
PDF
Tecnologia da informação infraestrutura de ti
PDF
Aula 9 - Estruturas Condicionais
PDF
Road Show TI SENAC - HTML5 & CSS 3.0 - O que esperar da próxima web?
ODP
Algoritmo aula 01-f
PDF
Word basico 2016
PDF
Teste de software - aula 01 (motivação)
Extreme programming (xp) - Resumo
Aula 4 - Teste de mesa
Plano de carreira Estrutura para área de Vendas - v.1
Introdução a Linguagem Java
Prototipação de software
Aula 2 - POO: Fundamentos da linguagem Java
As vantagens e desvantagens da aplicação de padrões de projeto
Fluxograma (Lógica de Programação)
Fundamentos da Engenharia de Software
Aula 2 - Processos de Software
Arquitetura de Software
Aula 4 - Estruturas condicionais
Tecnologia da informação infraestrutura de ti
Aula 9 - Estruturas Condicionais
Road Show TI SENAC - HTML5 & CSS 3.0 - O que esperar da próxima web?
Algoritmo aula 01-f
Word basico 2016
Teste de software - aula 01 (motivação)
Anúncio

Destaque (6)

PPTX
Semana 3: Introdução à linguagem de programação Java
KEY
Introdução a java
PDF
Java introdução ao java
PPTX
Logica de Programacao
PDF
Aula de Introdução - JAVA
PPT
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
Semana 3: Introdução à linguagem de programação Java
Introdução a java
Java introdução ao java
Logica de Programacao
Aula de Introdução - JAVA
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
Anúncio

Semelhante a Fundamentos do java (20)

ODP
Java 03 Tipos Dados Operadores
PPT
Java - Aula 08
PDF
Resumo tipo primitivo_java
PPTX
Curso Básico de Java - Aula 10
PPTX
Curso Básico de Java - Aula 5
PDF
Java 05
PDF
Mini Curso Java Day(Eliane Raquel)
PPTX
Curso de Java - Antonio Alves - Aula 02
PPT
Módulo 2 - Conceitos básicos sobre algoritmos.ppt
PDF
Tipos, literais, operadoes e controle de fluxo
PDF
Tipos, literais, operadoes e controle de fluxo
PDF
Tipos de Dados, Variáveis, Constantes
PPTX
JAVA - Introdução
PDF
Apostila c++
PDF
Aula 03 - Definições da linguagem Java
PPT
ASPECTOS DE FUNDAÇÃO AGROPECUARIA DE COMPUTAÇÃO
PDF
AulaJava02_VarOperadoresEstContinuação.pdf
PDF
Linguagem de Programação Estruturada com Java-Aula2
PPTX
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Java 03 Tipos Dados Operadores
Java - Aula 08
Resumo tipo primitivo_java
Curso Básico de Java - Aula 10
Curso Básico de Java - Aula 5
Java 05
Mini Curso Java Day(Eliane Raquel)
Curso de Java - Antonio Alves - Aula 02
Módulo 2 - Conceitos básicos sobre algoritmos.ppt
Tipos, literais, operadoes e controle de fluxo
Tipos, literais, operadoes e controle de fluxo
Tipos de Dados, Variáveis, Constantes
JAVA - Introdução
Apostila c++
Aula 03 - Definições da linguagem Java
ASPECTOS DE FUNDAÇÃO AGROPECUARIA DE COMPUTAÇÃO
AulaJava02_VarOperadoresEstContinuação.pdf
Linguagem de Programação Estruturada com Java-Aula2
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA

Mais de Nécio de Lima Veras (20)

PDF
Introdução ao JavaFX
PDF
Introdução à analise e complexidade de algoritmos
PDF
Teste de software
PDF
Versionamento com git
PDF
Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...
PDF
Introdução à Engenharia de Software Orientada a Agentes com JaCaMo
PDF
Jason: Componentes personalizados
PDF
Agentes inteligentes com jason
PDF
Ambientes em Sistemas Multi-agentes
PDF
Arquiteturas concretas de agentes inteligentes - bdi agents
PDF
Revisão de matemática
PDF
Especificações iniciais de agentes inteligentes
ODP
Notas sobre agentes inteligentes
ODP
Anotações do mapeamento OR
ODP
Hibernate-consultas
ODP
Mapeamento de herança OR
ODP
Relacionamentos do mapeamento OR
ODP
Processos iniciais do mapeamento OR
PDF
PDF
Introdução à linguagem UML
Introdução ao JavaFX
Introdução à analise e complexidade de algoritmos
Teste de software
Versionamento com git
Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...
Introdução à Engenharia de Software Orientada a Agentes com JaCaMo
Jason: Componentes personalizados
Agentes inteligentes com jason
Ambientes em Sistemas Multi-agentes
Arquiteturas concretas de agentes inteligentes - bdi agents
Revisão de matemática
Especificações iniciais de agentes inteligentes
Notas sobre agentes inteligentes
Anotações do mapeamento OR
Hibernate-consultas
Mapeamento de herança OR
Relacionamentos do mapeamento OR
Processos iniciais do mapeamento OR
Introdução à linguagem UML

Fundamentos do java

  • 1. Fundamentos da Linguagem Java     Prof. Nécio de Lima Veras http://lattes.cnpq.br/8284657916723590
  • 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