Tipos de Dados e Operadores <ul><ul><li>Regis Pires Magalhães </li></ul></ul><ul><ul><li>[email_address] </li></ul></ul>
Tipos de Dados e Operadores <ul><li>Identificadores </li></ul><ul><ul><li>O nome de um item no programa escrito em Java </...
Comentários <ul><li>Comentário de linha (// ...) </li></ul><ul><li>Comentário de Bloco (/* ... */) </li></ul><ul><ul><li>....
Declaração e uso de variáveis <ul><li>Declaração </li></ul><ul><ul><li>tipoDaVaríavel nomeDaVariável; </li></ul></ul><ul><...
Inicialização de variáveis <ul><ul><li>... </li></ul></ul><ul><ul><li>//gera uma idade no ano seguinte </li></ul></ul><ul>...
Operadores Aritméticos <ul><li>+, -, / e * </li></ul><ul><li>% (módulo) </li></ul><ul><ul><li>Resto da divisão inteira. </...
Tipos de Dados e Operadores <ul><li>Operadores </li></ul><ul><ul><li>Aritméticos  </li></ul></ul><ul><ul><ul><li>adição ( ...
Tipos de Dados e Operadores <ul><li>Operadores </li></ul><ul><ul><li>Teste condicional ( &&  e  || ) </li></ul></ul><ul><u...
Tipos de Dados e Operadores <ul><li>Operadores </li></ul><ul><ul><li>Atribuição ( = ) </li></ul></ul><ul><ul><ul><li>Usado...
Tipos de Dados e Operadores <ul><li>Operadores: </li></ul><ul><ul><li>Atribuição com operação: </li></ul></ul><ul><ul><ul>...
Tipos de Dados e Operadores <ul><li>Operador ternário(if-else) </li></ul><ul><ul><li>Operador que usa três argumentos: </l...
Tipos Primitivos <ul><li>double  </li></ul><ul><ul><li>Número com ponto flutuante. </li></ul></ul><ul><ul><li>double  d  =...
Tipos primitivos e valores <ul><li>Tipos primitivos guardam o real conteúdo da variável. </li></ul><ul><li>Ao usar o opera...
Tipos Primitivos <ul><li>Armazenam valores e não referências. </li></ul><ul><li>Não necessitam de instanciação. </li></ul>...
Casting e promoção <ul><li>Problema </li></ul><ul><li>int   i ; </li></ul><ul><li>double   d, d2 ; </li></ul><ul><li>d   =...
Tipos de Dados e Operadores <ul><li>Conversão de tipos </li></ul><ul><ul><li>Java converterá um tipo de dados em outro sem...
Tipos de Dados e Operadores <ul><li>Conversão de tipos </li></ul><ul><ul><li>Algumas vezes, valores literais podem ter tip...
Tipos de Dados e Operadores char   c   =   0xffff ;   // max char hex value byte   b   =   0x7f ;   // max byte hex value ...
Casting <ul><ul><li>É o processo em que um tipo mais abrangente é moldado ( casted ) para outro tipo menos abrangente, pod...
Casting <ul><ul><li>De long para int: </li></ul></ul><ul><ul><ul><li>long  x  = 10000; </li></ul></ul></ul><ul><ul><ul><li...
Tipos de Dados e Operadores <ul><li>Promoção </li></ul><ul><ul><li>Qualquer operação com dois ou mais operadores de tipos ...
Casting <ul><li>float   x   =   0.0 ;  // Não compila </li></ul><ul><li>float   x   =   0.0f ;  // Ok.  </li></ul><ul><li>...
Castings possíveis
Tamanhos dos tipos
Referências e Recursos <ul><li>Livros </li></ul><ul><ul><li>Object-Oriented System Development: HTML Edition </li></ul></u...
Upcoming SlideShare
Loading in …5
×

Java 03 Tipos Dados Operadores

3,286 views

Published on

2 Comments
1 Like
Statistics
Notes
No Downloads
Views
Total views
3,286
On SlideShare
0
From Embeds
0
Number of Embeds
15
Actions
Shares
0
Downloads
103
Comments
2
Likes
1
Embeds 0
No embeds

No notes for slide

Java 03 Tipos Dados Operadores

  1. 1. Tipos de Dados e Operadores <ul><ul><li>Regis Pires Magalhães </li></ul></ul><ul><ul><li>[email_address] </li></ul></ul>
  2. 2. Tipos de Dados e Operadores <ul><li>Identificadores </li></ul><ul><ul><li>O nome de um item no programa escrito em Java </li></ul></ul><ul><ul><ul><li>Variáveis, métodos, classes e labels. </li></ul></ul></ul><ul><ul><li>Não podem ser palavras reservadas </li></ul></ul><ul><ul><li>Devem iniciar com letra, cifrão($) ou sublinhado(_). </li></ul></ul><ul><ul><li>Por convenção: </li></ul></ul><ul><ul><ul><li>Nomes de variaveis e métodos iniciam com minúsculas e as palavras subsequentes devem iniciar com maiúsculas. </li></ul></ul></ul><ul><ul><ul><ul><li>Ex: nome, nomeComposto, etc... </li></ul></ul></ul></ul><ul><ul><ul><li>Nomes de classes iniciam com maiúsculas e as palavras subsequentes também. </li></ul></ul></ul><ul><ul><ul><ul><li>Ex: Classe, ClasseComposta, etc... </li></ul></ul></ul></ul><ul><ul><ul><li>Nomes de constantes são escritos em caixa alta e os nomes compostos separados pelo caracter '_'. </li></ul></ul></ul><ul><ul><ul><ul><li>Ex: CONSTANTE, OUTRA_CONSTANTE </li></ul></ul></ul></ul>
  3. 3. Comentários <ul><li>Comentário de linha (// ...) </li></ul><ul><li>Comentário de Bloco (/* ... */) </li></ul><ul><ul><li>... </li></ul></ul><ul><ul><li>/* comentário daqui, </li></ul></ul><ul><ul><li>ate aqui */ </li></ul></ul><ul><ul><li>// declara a idade </li></ul></ul><ul><ul><li>int idade; </li></ul></ul><ul><ul><li>idade = 15; </li></ul></ul><ul><ul><li>// imprime a idade </li></ul></ul><ul><ul><li>System.out.println(idade); </li></ul></ul><ul><ul><li>... </li></ul></ul>
  4. 4. Declaração e uso de variáveis <ul><li>Declaração </li></ul><ul><ul><li>tipoDaVaríavel nomeDaVariável; </li></ul></ul><ul><ul><li>int idade; </li></ul></ul><ul><li>Uso </li></ul><ul><ul><li>idade = 15; </li></ul></ul>
  5. 5. Inicialização de variáveis <ul><ul><li>... </li></ul></ul><ul><ul><li>//gera uma idade no ano seguinte </li></ul></ul><ul><ul><li>int idade = 15; </li></ul></ul><ul><ul><li>int idadeNoAnoQueVem; </li></ul></ul><ul><ul><li>idadeNoAnoQueVem = idade + 1; </li></ul></ul><ul><ul><li>... </li></ul></ul>
  6. 6. Operadores Aritméticos <ul><li>+, -, / e * </li></ul><ul><li>% (módulo) </li></ul><ul><ul><li>Resto da divisão inteira. </li></ul></ul><ul><li>... </li></ul><ul><li>int quatro = 2 + 2 ; </li></ul><ul><li>int tres = 5 – 2 ; </li></ul><ul><li>int oito = 4 * 2 ; </li></ul><ul><li>int dezesseis = 64 / 4 ; </li></ul><ul><li>int um = 5 % 2 ; // 5 dividido por 2 dá 2 e tem resto 1; </li></ul><ul><li>// o operador % pega o resto da divisão inteira </li></ul><ul><li>... </li></ul>
  7. 7. Tipos de Dados e Operadores <ul><li>Operadores </li></ul><ul><ul><li>Aritméticos </li></ul></ul><ul><ul><ul><li>adição ( + ), subtração ( - ) </li></ul></ul></ul><ul><ul><ul><li>multiplicação ( * ), divisão ( / ), resto ( % ) </li></ul></ul></ul><ul><ul><ul><li>incremento ( ++ ), decremento ( -- ) </li></ul></ul></ul><ul><ul><ul><ul><li>a++; a--; ++a; --a </li></ul></ul></ul></ul><ul><ul><li>Relacionais </li></ul></ul><ul><ul><ul><li>comparação ( == , != , < , <= , > , >= ) produz boolean </li></ul></ul></ul><ul><ul><li>Bit-a-bit (tipos inteiros e booleanos) </li></ul></ul><ul><ul><ul><li>and ( & ), or ( | ), not ( ~ ) </li></ul></ul></ul><ul><ul><ul><li>deslocamento à esquerda ( << ), à direita ( >> ) </li></ul></ul></ul><ul><ul><ul><li>Deslocamento à direita sem sinal ( >>> ) </li></ul></ul></ul>
  8. 8. Tipos de Dados e Operadores <ul><li>Operadores </li></ul><ul><ul><li>Teste condicional ( && e || ) </li></ul></ul><ul><ul><ul><li>Operam somente em expressões booleanas </li></ul></ul></ul><ul><ul><ul><li>Avaliados da esquerda para a direita </li></ul></ul></ul><ul><ul><ul><li>Implementam a técnica de curto-circuito </li></ul></ul></ul><ul><ul><ul><li>Exemplo </li></ul></ul></ul><ul><ul><ul><ul><li>a < b && c > d || e == f </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Se “a < b” avalia para false, a subexpressão “ && ” é false e a avaliação de “c > d” não é realizada </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>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 </li></ul></ul></ul></ul></ul>
  9. 9. Tipos de Dados e Operadores <ul><li>Operadores </li></ul><ul><ul><li>Atribuição ( = ) </li></ul></ul><ul><ul><ul><li>Usado para atribuir um valor a uma variável </li></ul></ul></ul><ul><ul><ul><li>Pode ser usado em combinação com outros operadores. </li></ul></ul></ul><ul><ul><ul><li>Se possível, a expressão do lado direito é convertida para o tipo do operando do lado esquerdo. </li></ul></ul></ul><ul><ul><ul><li>Não faz conversões implícitas que resultam em perda de dados. </li></ul></ul></ul><ul><ul><ul><ul><li>Tais conversões devem ser feitas via cast (conversão) explícito. </li></ul></ul></ul></ul>
  10. 10. Tipos de Dados e Operadores <ul><li>Operadores: </li></ul><ul><ul><li>Atribuição com operação: </li></ul></ul><ul><ul><ul><li>Um tipo especial de atribuição é feito juntando-se o operador de atribuição com um dos operadores aritméticos e bit-a-bit. </li></ul></ul></ul><ul><ul><li>Exemplo: </li></ul></ul><ul><ul><ul><ul><li> </li></ul></ul></ul></ul>a += 1 // a = a + 1 a *= b // a = a * b a |= b // a = a | b ...
  11. 11. Tipos de Dados e Operadores <ul><li>Operador ternário(if-else) </li></ul><ul><ul><li>Operador que usa três argumentos: </li></ul></ul><ul><ul><ul><li>boolean-exp ? value0 : value1 </li></ul></ul></ul><ul><ul><ul><li>Se boolean-exp avaliar para true, a expressão value0 será o resultado da expressão. </li></ul></ul></ul><ul><ul><ul><li>Se boolean-exp avaliar para false, a expressão value1 será o resultado da expressão. </li></ul></ul></ul><ul><ul><li>Exemplo: </li></ul></ul>
  12. 12. Tipos Primitivos <ul><li>double </li></ul><ul><ul><li>Número com ponto flutuante. </li></ul></ul><ul><ul><li>double d = 3.14; </li></ul></ul><ul><ul><li>double x = 5 * 10; </li></ul></ul><ul><li>boolean </li></ul><ul><ul><li>Verdadeiro ou falso. </li></ul></ul><ul><ul><li>boolean verdade = true ; </li></ul></ul><ul><li>char </li></ul><ul><ul><li>Um e apenas um caractere. </li></ul></ul><ul><ul><li>Caractere deve estar entre aspas simples. </li></ul></ul><ul><ul><li>char letra = 'a' ; </li></ul></ul><ul><ul><li>System.out.println(letra); </li></ul></ul>
  13. 13. Tipos primitivos e valores <ul><li>Tipos primitivos guardam o real conteúdo da variável. </li></ul><ul><li>Ao usar o operador de atribuição =, o valor será copiado. </li></ul><ul><li>int i = 5; // i recebe uma cópia do valor 5 </li></ul><ul><li>int j = i; // j recebe uma cópia do valor de i </li></ul><ul><li>i = i + 1; // i vira 6, j continua 5 </li></ul>
  14. 14. Tipos Primitivos <ul><li>Armazenam valores e não referências. </li></ul><ul><li>Não necessitam de instanciação. </li></ul><ul><li>Outros tipos primitivos: </li></ul><ul><ul><li>byte, short, long e float. </li></ul></ul><ul><li>O tipo boolean tem 2 valores possíveis: true e false . </li></ul><ul><ul><li>É um tipo que representa um bit de informação, mas seu tamanho real não está precisamente definido (http://java.sun.com/docs/books/tutorial/java/nutsandbolts/datatypes.html). </li></ul></ul>
  15. 15. Casting e promoção <ul><li>Problema </li></ul><ul><li>int i ; </li></ul><ul><li>double d, d2 ; </li></ul><ul><li>d = 3.1415 ; </li></ul><ul><li>i = d ; // não compila </li></ul><ul><li>i = 3.14 ; // não compila </li></ul><ul><li>d = 5 ; // ok, double pode conter um inteiro </li></ul><ul><li>i = d ; // não compila </li></ul><ul><li>// Quando há possibilidade de perda, a conversão </li></ul><ul><li>// não pode ser feita. </li></ul><ul><li>i = 5 ; // ok, pois não há perda de dados. </li></ul><ul><li>d2 = i ; // ok </li></ul>
  16. 16. Tipos de Dados e Operadores <ul><li>Conversão de tipos </li></ul><ul><ul><li>Java converterá um tipo de dados em outro sempre que apropriado. </li></ul></ul><ul><ul><li>As conversões ocorrerão automaticamente quando houver garantia de não haver perda de informação: </li></ul></ul><ul><ul><ul><li>Tipos menores em tipos maiores; </li></ul></ul></ul><ul><ul><ul><li>Tipos de menor precisão em tipos de maior precisão; </li></ul></ul></ul><ul><ul><ul><li>Inteiros em ponto-flutuante. </li></ul></ul></ul><ul><ul><li>Exemplo: </li></ul></ul>
  17. 17. Tipos de Dados e Operadores <ul><li>Conversão de tipos </li></ul><ul><ul><li>Algumas vezes, valores literais podem ter tipos ambíguos: </li></ul></ul><ul><ul><ul><li>Nestes casos o compilador necessita de informações adicionais para determinar o tipo em questão. </li></ul></ul></ul>
  18. 18. Tipos de Dados e Operadores char c = 0xffff ; // max char hex value byte b = 0x7f ; // max byte hex value short s = 0x7fff ; // max short hex value int i1 = 0x2f ; // Hexadecimal (lowercase) int i2 = 0X2F ; // Hexadecimal (uppercase) int i3 = 0177 ; // Octal (zeros iniciais) // Hex and Oct também trabalham com long long n1 = 200L ; // long suffix long n2 = 200l ; // long suffix (pode causar confusão) long n3 = 200 ; float f1 = 1 ; float f2 = 1F ; // float suffix float f3 = 1f ; // float suffix float f4 = 1e - 45f ; // potência de 10 float f5 = 1e + 9f ; // float suffix double d1 = 1d ; // double suffix double d2 = 1D ; // double suffix double d3 = 47e47d ; // potência de 10 <ul><li>Conversão de tipos </li></ul><ul><ul><li>Exemplos de literais: </li></ul></ul>
  19. 19. Casting <ul><ul><li>É o processo em que um tipo mais abrangente é moldado ( casted ) para outro tipo menos abrangente, podendo haver algum tipo de perda. </li></ul></ul><ul><ul><li>O cast não é feito automaticamente. O programador precisa defini-lo explicitamente, assumindo os riscos de perda de informação. </li></ul></ul><ul><ul><li>É feito colocando-se o tipo desejado entre parênteses na frente da expressão. </li></ul></ul><ul><ul><ul><li>double d3 = 3.14; </li></ul></ul></ul><ul><ul><ul><li>int i = ( int ) d3; </li></ul></ul></ul><ul><ul><li>No exemplo acima, d3 foi moldado como um int . O valor de i agora é 3 . </li></ul></ul>
  20. 20. Casting <ul><ul><li>De long para int: </li></ul></ul><ul><ul><ul><li>long x = 10000; </li></ul></ul></ul><ul><ul><ul><li>int i = x; // Não ok, pois pode perder dados. </li></ul></ul></ul><ul><ul><li>Com o casting : </li></ul></ul><ul><ul><ul><li>long x = 10000; </li></ul></ul></ul><ul><ul><ul><li>int i = ( int ) x; </li></ul></ul></ul>
  21. 21. Tipos de Dados e Operadores <ul><li>Promoção </li></ul><ul><ul><li>Qualquer operação com dois ou mais operadores de tipos diferentes sofrerá promoção, isto é, conversão automática para o tipo mais abrangente </li></ul></ul><ul><ul><ul><li>O maior ou mais preciso tipo da expressão </li></ul></ul></ul><ul><ul><ul><li>O tipo int (char, byte ou short) </li></ul></ul></ul><ul><ul><li>Exemplo </li></ul></ul>
  22. 22. Casting <ul><li>float x = 0.0 ; // Não compila </li></ul><ul><li>float x = 0.0f ; // Ok. </li></ul><ul><li>// A letra f indica que o literal deve ser </li></ul><ul><li>// tratado como float. </li></ul><ul><li>long l = 0.0L ; </li></ul><ul><li>// A letra L indica que o literal deve ser </li></ul><ul><li>// tratado como long. </li></ul><ul><li>double d = 5 ; </li></ul><ul><li>float f = 3 ; </li></ul><ul><li>float x = ( float ) d + f ; </li></ul><ul><li>/* O Java faz as contas e vai armazenando sempre </li></ul><ul><li>no maior tipo que apareceu durante as operações. </li></ul><ul><li>No mínimo, o Java armazena um int,para fazer as </li></ul><ul><li>contas. Boolean não pode ser convertido para outro tipo. */ </li></ul>
  23. 23. Castings possíveis
  24. 24. Tamanhos dos tipos
  25. 25. Referências e Recursos <ul><li>Livros </li></ul><ul><ul><li>Object-Oriented System Development: HTML Edition </li></ul></ul><ul><ul><ul><li>http://g.oswego.edu/dl/oosdw3/ </li></ul></ul></ul><ul><ul><li>Software Engineering (5th Edition) – Ian Sommerville </li></ul></ul><ul><ul><li>Object-Oriented Analysis and Design with Applications – Grady Booch </li></ul></ul><ul><ul><li>Object-Oriented Software Engineering: A Case Driven Approach – Ivar Jacobson </li></ul></ul><ul><ul><li>Thinking in Java, 3 rd ed. Revision 4.0 – Bruce Eckel </li></ul></ul><ul><ul><ul><li>http://www.mindview.net/Books/TIJ/ </li></ul></ul></ul><ul><li>Web </li></ul><ul><ul><li>http://www.argonavis.com.br/cursos/java/j100/index.html </li></ul></ul>

×