Tipos de Dados e Operadores Regis Pires Magalhães [email_address]
Tipos de Dados e Operadores Identificadores O nome de um item no programa escrito em Java Variáveis, métodos, classes e labels. Não podem ser palavras reservadas  Devem iniciar com letra, cifrão($) ou sublinhado(_). Por convenção: Nomes de variaveis e métodos 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
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); ...
Declaração e uso de variáveis Declaração tipoDaVaríavel nomeDaVariável; int idade; Uso idade = 15;
Inicialização de variáveis ... //gera uma idade no ano seguinte int idade = 15; int idadeNoAnoQueVem; idadeNoAnoQueVem = idade + 1; ...
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 ...
Tipos de Dados e Operadores Operadores Aritméticos  adição ( + ), subtração ( - )  multiplicação ( * ), divisão ( / ), resto ( % )  incremento ( ++ ), decremento ( -- )  a++; a--; ++a; --a Relacionais comparação ( == ,  != ,  < ,  <= ,  > ,  >= ) produz boolean Bit-a-bit (tipos inteiros e booleanos) and ( & ), or ( | ), not ( ~ )  deslocamento à esquerda ( << ), à direita ( >> )  Deslocamento à direita sem sinal ( >>> )
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
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.
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 ...
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:
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);
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
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 . É 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).
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
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:
Tipos de Dados e Operadores Conversão de tipos Algumas vezes, valores literais podem ter tipos ambíguos: Nestes casos o compilador necessita de informações adicionais para determinar o tipo em questão.
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 Conversão de tipos Exemplos de literais:
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 .
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;
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
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. */
Castings possíveis
Tamanhos dos tipos
Referências e Recursos Livros Object-Oriented System Development: HTML Edition http://g.oswego.edu/dl/oosdw3/ Software Engineering (5th Edition) – Ian Sommerville Object-Oriented Analysis and Design with Applications – Grady Booch Object-Oriented Software Engineering: A Case Driven Approach – Ivar Jacobson Thinking in Java, 3 rd  ed. Revision 4.0 – Bruce Eckel http://www.mindview.net/Books/TIJ/ Web http://www.argonavis.com.br/cursos/java/j100/index.html

Java 03 Tipos Dados Operadores

  • 1.
    Tipos de Dadose Operadores Regis Pires Magalhães [email_address]
  • 2.
    Tipos de Dadose Operadores Identificadores O nome de um item no programa escrito em Java Variáveis, métodos, classes e labels. Não podem ser palavras reservadas Devem iniciar com letra, cifrão($) ou sublinhado(_). Por convenção: Nomes de variaveis e métodos 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
  • 3.
    Comentários Comentário delinha (// ...) Comentário de Bloco (/* ... */) ... /* comentário daqui, ate aqui */ // declara a idade int idade; idade = 15; // imprime a idade System.out.println(idade); ...
  • 4.
    Declaração e usode variáveis Declaração tipoDaVaríavel nomeDaVariável; int idade; Uso idade = 15;
  • 5.
    Inicialização de variáveis... //gera uma idade no ano seguinte int idade = 15; int idadeNoAnoQueVem; idadeNoAnoQueVem = idade + 1; ...
  • 6.
    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 ...
  • 7.
    Tipos de Dadose Operadores Operadores Aritméticos adição ( + ), subtração ( - ) multiplicação ( * ), divisão ( / ), resto ( % ) incremento ( ++ ), decremento ( -- ) a++; a--; ++a; --a Relacionais comparação ( == , != , < , <= , > , >= ) produz boolean Bit-a-bit (tipos inteiros e booleanos) and ( & ), or ( | ), not ( ~ ) deslocamento à esquerda ( << ), à direita ( >> ) Deslocamento à direita sem sinal ( >>> )
  • 8.
    Tipos de Dadose 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
  • 9.
    Tipos de Dadose 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.
  • 10.
    Tipos de Dadose 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 ...
  • 11.
    Tipos de Dadose 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:
  • 12.
    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);
  • 13.
    Tipos primitivos evalores 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
  • 14.
    Tipos Primitivos Armazenamvalores 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 . É 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).
  • 15.
    Casting e promoçãoProblema 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
  • 16.
    Tipos de Dadose 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:
  • 17.
    Tipos de Dadose Operadores Conversão de tipos Algumas vezes, valores literais podem ter tipos ambíguos: Nestes casos o compilador necessita de informações adicionais para determinar o tipo em questão.
  • 18.
    Tipos de Dadose 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 Conversão de tipos Exemplos de literais:
  • 19.
    Casting É oprocesso 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 .
  • 20.
    Casting De longpara int: long x = 10000; int i = x; // Não ok, pois pode perder dados. Com o casting : long x = 10000; int i = ( int ) x;
  • 21.
    Tipos de Dadose 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
  • 22.
    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. */
  • 23.
  • 24.
  • 25.
    Referências e RecursosLivros Object-Oriented System Development: HTML Edition http://g.oswego.edu/dl/oosdw3/ Software Engineering (5th Edition) – Ian Sommerville Object-Oriented Analysis and Design with Applications – Grady Booch Object-Oriented Software Engineering: A Case Driven Approach – Ivar Jacobson Thinking in Java, 3 rd ed. Revision 4.0 – Bruce Eckel http://www.mindview.net/Books/TIJ/ Web http://www.argonavis.com.br/cursos/java/j100/index.html