Curso de Java
Aula 02 – Tipos e operadores
TIPOS E OPERADORES
 Java é uma linguagem fortemente tipada
 Todas as variáveis devem ter um tipo associado
 A utilização de uma variável deve ser posterior a sua declaração
 As conversões de tipo (Casting) devem ser rigidamente controladas pela
linguagem
 As conversões de tipo devem ser explicitas
Tipos primitivos e Tipos compostos
 Tipos primitivos são aqueles tiposjá embutidos na linguagem java,
enquanto os tipos compostos são todas as classes da linguagem java,
bem como as classes que você venha a criar.
 Variaveis de tipos primitivos são tratados de uma maneira bem diferente
das variáveis de referencia para objetos.
Tipos primitivos
 Quando você declara uma variável do tipo primitivo o java aloca um
pedaço da memória que é grande o suficiente para guardar valores do
tipo primitivo.
 Se você definie uma variavl do tipo primitivo como uma variável de
instancia ela inicializada para ‘0’ se for inteira; para false se for boolean e
para ‘0’ se for do tipo char.
 Variaveis primitivas armazenam seu valor . Se você declara uma valriavel
int e atribui o valor dela para 5 o valor é armazenado diretamente nos 4
bytes reservados para a variavel
Tipos compostos
 Quando você declara uma variável do tipo composto, também chamada
de variável de referencia ela também recebe um pedaço de memória,
mas esse pedaço de memória é grande o suficiente apenas para
armazenar a referencia ao objeto.
 Uma variável de referencia POR PADRÃO é sempre inicializada como null
para indicar que ainda não recebeu referencia para nenhum objeto.
 Use o operador de atribuição para fazer com que uma variável de
referencia se refira a uma instancia de classe.
 Essa atribuição pode ser um objeto existente ou para um objeto recém
criado através do operador new
Tipo boolean
Tipo Contem Default tamanho Faixa de
valores
boolean true ou false false 1 bit Pode ser true
ou false
O valor booleano não é um tipo inteiro onde false é representado por 0 e true
por 1. Um valor do tipo boolean não pode ser convertido para nenhum outro
tipo de dado
Tipo byte
Tipo Contém Default Tamanho Faixa de
valores
byte Inteiro com
sinal
0 8 bits Pode assumir
valores entre
-27 e 27 - 1
Literais inteiros podem ser expressos por notação octal ou
hexadecimal. Ou seja, um literal que começa
Com 0x ou 0X e os outros dígitos são representados por
caracteres de 0 a F para números com base 16
Tipo short
Tipo Contém Default Tamanho Faixa de
valores
byte Inteiro com
sinal
0 8 bits Pode assumir
valores entre
-215 e 215 - 1
Cada tipo inteiro possui uma classe involucro correspondente (Wrapper
classes) essas classes possuem constantes MIN_VALUE e MAX_VALUE que
definem os limites das faixas de valores. Possui também métodos
extremamente uteis como Byte.parseByte() e Integer.parseInt para realizar
conversões de Strings para inteiros.
Tipo int
Tipo Contém Default Tamanho Faixa de
valores
int Inteiro com
sinal
0 32 bits Pode assumir
valores entre
-231 e 231 - 1
Tipo long
Tipo Contém Default Tamanho Faixa de
valores
long Inteiro com
sinal
0 64 Pode assumir
valores entre
-263 e 263 - 1
Tipo double
Tipo Contém Default Tamanho Faixa de
valores
double Ponto
flutuante
0.0 64 bits Representa
números em
notação de
ponto
flutuante. Sua
representaçã
o é
exponencial,
alguns bits
representam
a base e
outros
oexpoente
Tipo float
Tipo Contém Default Tamanho Faixa de
valores
float Ponto
flutuante
0.0 32 bits Pode assumir
valores entre
-263 e 263 - 1
Literais de ponto flutuante também podem ser representados através de
notação cientifica na qual um numero é seguido pela letra e ou E
assinalando o expoente e por outro numero que representa a potencia de 10
pela qual o primeiro numero é multiplicado. Numeros com ponto flutuante
são double por padrão, para indicar que o numero é um float basta
adicionar o caracter f ou F no final do numero.
Tipo char
Tipo Contém Default Tamanho Faixa de
valores
char Caracter
unicode
u000 16 bits Armazena
dados
alfanuméricos
. Tambem
armazenas
dados inteiros
entre 0 e
65535
Tipo char
 O tipo char representa um caractere Unicode. É motivo de surpresa para
programadores experientes descobrir que um valor char possui 16 BITS de
tamanho.
 Um literal caractere vem sempre entre aspas simples.
 Um valor do tipo char não pode ser convertido para e nem a partir de
tipos inteiros pois o tipo tipo char é um tipo não sinalizado (unsigned)
Sequencia de Escape Valor do Caractere
b Backspace
t Tabulação horizontal
n Nova linha
f Alimentação de formulário
r Retorno de carro
” Aspas duplas
’ Aspas simples
 Contrabarra
uxxxx Caractere Unicode com
codificação xxx onde xxxx são
quatro dígitos hexadecimais.
Tipo String
 Alem dos tipos primitivos Java possui um tipo próprio de dado para
trabalhar com sequencias de texto(String)
 Ele no entanto não é um tipo primitivo devido ao uso frequente de strings
em programas.
 Um literal String é um conjuto de caracteres delimitados por aspas duplas.
 Strings aceitam qualquer sequencia de escape permitida para um valor
char.
 Use a sequencia ” para incluir aspas dentro de uma string
Conversoes de tipo (Casting)
 Java permite a conversão de tipo entre valores inteiros e valores reais
(ponto flutuante). Além disso por corresponder a um numero na
codificação Unicode o tipo char pode ser convertido para e a partir de
um tipo inteiro ou ponto flutuante.
 Em realidade o único tipo de dado que não pode ser convertido para ou
a partir de um numero é o boolean
 A conversão pode ser de ampliação quando um valor é convertido para
um tipo com uma faixa maior de valores.
 Ou pode ser de redução que é quando o valor é convertido para um
valor com menos bits de representação.Esse tipo de conversão pode ser
um problema é não é recomendada
Problemas em conversões de
narrowing(redução)
int byte
Sem uso de conversor
Erro em tempo de compilação.
Com conversão de tipo
Outro exemplo:
Esse tipo de casting é mais comum em conversões de números reais para
inteiros. Quando ela ocorre a parte fracional é truncada. (o valor após a
virgula é arredondado para 0 e não para o inteiro mais próximo
Expressões e Operadores
Aula 02
Expressões e operadores
 Variáveis são importantes para a arquitetura de um programa java.
 As expressões são o próximo nível de estrutura em um programa java. O
interpretador Java (JVM) avalia uma expressão para determinar o seu
resultado.
Operadores
Precedência em Java
 Precedência indica a ordem na qual as operações de uma expressão
serão executadas. No caso da expressão acima o sinal de multiplicação
tem uma prioridade mais alta do que o de adição, logo a será somado a
multiplicação de b por c.
 A precedência padrão de um operador pode ser alterada com o uso de
parenteseses de forma a explicitar a ordem na qual as operações devem
ser realizadas, segundo o exemplo abaixo
Associatividade
 Quando uma expressão possui vários operadores com o mesmo grau de
precedência, é a associatividade dos operadores que determina a ordem
padrão na qual as operações serão executadas.
 A maior parte dos operadores possui associatividade da esquerda para a
direita
 Os operadores unários e de atribuição possuem associatividade da direita
para a esquerda
Oparadores unários e binários

Curso de Java - Antonio Alves - Aula 02

  • 1.
    Curso de Java Aula02 – Tipos e operadores
  • 2.
    TIPOS E OPERADORES Java é uma linguagem fortemente tipada  Todas as variáveis devem ter um tipo associado  A utilização de uma variável deve ser posterior a sua declaração  As conversões de tipo (Casting) devem ser rigidamente controladas pela linguagem  As conversões de tipo devem ser explicitas
  • 3.
    Tipos primitivos eTipos compostos  Tipos primitivos são aqueles tiposjá embutidos na linguagem java, enquanto os tipos compostos são todas as classes da linguagem java, bem como as classes que você venha a criar.  Variaveis de tipos primitivos são tratados de uma maneira bem diferente das variáveis de referencia para objetos.
  • 4.
    Tipos primitivos  Quandovocê declara uma variável do tipo primitivo o java aloca um pedaço da memória que é grande o suficiente para guardar valores do tipo primitivo.  Se você definie uma variavl do tipo primitivo como uma variável de instancia ela inicializada para ‘0’ se for inteira; para false se for boolean e para ‘0’ se for do tipo char.  Variaveis primitivas armazenam seu valor . Se você declara uma valriavel int e atribui o valor dela para 5 o valor é armazenado diretamente nos 4 bytes reservados para a variavel
  • 5.
    Tipos compostos  Quandovocê declara uma variável do tipo composto, também chamada de variável de referencia ela também recebe um pedaço de memória, mas esse pedaço de memória é grande o suficiente apenas para armazenar a referencia ao objeto.  Uma variável de referencia POR PADRÃO é sempre inicializada como null para indicar que ainda não recebeu referencia para nenhum objeto.  Use o operador de atribuição para fazer com que uma variável de referencia se refira a uma instancia de classe.  Essa atribuição pode ser um objeto existente ou para um objeto recém criado através do operador new
  • 6.
    Tipo boolean Tipo ContemDefault tamanho Faixa de valores boolean true ou false false 1 bit Pode ser true ou false O valor booleano não é um tipo inteiro onde false é representado por 0 e true por 1. Um valor do tipo boolean não pode ser convertido para nenhum outro tipo de dado
  • 7.
    Tipo byte Tipo ContémDefault Tamanho Faixa de valores byte Inteiro com sinal 0 8 bits Pode assumir valores entre -27 e 27 - 1 Literais inteiros podem ser expressos por notação octal ou hexadecimal. Ou seja, um literal que começa Com 0x ou 0X e os outros dígitos são representados por caracteres de 0 a F para números com base 16
  • 8.
    Tipo short Tipo ContémDefault Tamanho Faixa de valores byte Inteiro com sinal 0 8 bits Pode assumir valores entre -215 e 215 - 1 Cada tipo inteiro possui uma classe involucro correspondente (Wrapper classes) essas classes possuem constantes MIN_VALUE e MAX_VALUE que definem os limites das faixas de valores. Possui também métodos extremamente uteis como Byte.parseByte() e Integer.parseInt para realizar conversões de Strings para inteiros.
  • 9.
    Tipo int Tipo ContémDefault Tamanho Faixa de valores int Inteiro com sinal 0 32 bits Pode assumir valores entre -231 e 231 - 1
  • 10.
    Tipo long Tipo ContémDefault Tamanho Faixa de valores long Inteiro com sinal 0 64 Pode assumir valores entre -263 e 263 - 1
  • 11.
    Tipo double Tipo ContémDefault Tamanho Faixa de valores double Ponto flutuante 0.0 64 bits Representa números em notação de ponto flutuante. Sua representaçã o é exponencial, alguns bits representam a base e outros oexpoente
  • 12.
    Tipo float Tipo ContémDefault Tamanho Faixa de valores float Ponto flutuante 0.0 32 bits Pode assumir valores entre -263 e 263 - 1 Literais de ponto flutuante também podem ser representados através de notação cientifica na qual um numero é seguido pela letra e ou E assinalando o expoente e por outro numero que representa a potencia de 10 pela qual o primeiro numero é multiplicado. Numeros com ponto flutuante são double por padrão, para indicar que o numero é um float basta adicionar o caracter f ou F no final do numero.
  • 13.
    Tipo char Tipo ContémDefault Tamanho Faixa de valores char Caracter unicode u000 16 bits Armazena dados alfanuméricos . Tambem armazenas dados inteiros entre 0 e 65535
  • 14.
    Tipo char  Otipo char representa um caractere Unicode. É motivo de surpresa para programadores experientes descobrir que um valor char possui 16 BITS de tamanho.  Um literal caractere vem sempre entre aspas simples.  Um valor do tipo char não pode ser convertido para e nem a partir de tipos inteiros pois o tipo tipo char é um tipo não sinalizado (unsigned)
  • 15.
    Sequencia de EscapeValor do Caractere b Backspace t Tabulação horizontal n Nova linha f Alimentação de formulário r Retorno de carro ” Aspas duplas ’ Aspas simples Contrabarra uxxxx Caractere Unicode com codificação xxx onde xxxx são quatro dígitos hexadecimais.
  • 16.
    Tipo String  Alemdos tipos primitivos Java possui um tipo próprio de dado para trabalhar com sequencias de texto(String)  Ele no entanto não é um tipo primitivo devido ao uso frequente de strings em programas.  Um literal String é um conjuto de caracteres delimitados por aspas duplas.  Strings aceitam qualquer sequencia de escape permitida para um valor char.  Use a sequencia ” para incluir aspas dentro de uma string
  • 17.
    Conversoes de tipo(Casting)  Java permite a conversão de tipo entre valores inteiros e valores reais (ponto flutuante). Além disso por corresponder a um numero na codificação Unicode o tipo char pode ser convertido para e a partir de um tipo inteiro ou ponto flutuante.  Em realidade o único tipo de dado que não pode ser convertido para ou a partir de um numero é o boolean  A conversão pode ser de ampliação quando um valor é convertido para um tipo com uma faixa maior de valores.  Ou pode ser de redução que é quando o valor é convertido para um valor com menos bits de representação.Esse tipo de conversão pode ser um problema é não é recomendada
  • 18.
    Problemas em conversõesde narrowing(redução) int byte
  • 19.
    Sem uso deconversor Erro em tempo de compilação.
  • 20.
  • 21.
    Outro exemplo: Esse tipode casting é mais comum em conversões de números reais para inteiros. Quando ela ocorre a parte fracional é truncada. (o valor após a virgula é arredondado para 0 e não para o inteiro mais próximo
  • 22.
  • 23.
    Expressões e operadores Variáveis são importantes para a arquitetura de um programa java.  As expressões são o próximo nível de estrutura em um programa java. O interpretador Java (JVM) avalia uma expressão para determinar o seu resultado.
  • 24.
  • 25.
    Precedência em Java Precedência indica a ordem na qual as operações de uma expressão serão executadas. No caso da expressão acima o sinal de multiplicação tem uma prioridade mais alta do que o de adição, logo a será somado a multiplicação de b por c.  A precedência padrão de um operador pode ser alterada com o uso de parenteseses de forma a explicitar a ordem na qual as operações devem ser realizadas, segundo o exemplo abaixo
  • 26.
    Associatividade  Quando umaexpressão possui vários operadores com o mesmo grau de precedência, é a associatividade dos operadores que determina a ordem padrão na qual as operações serão executadas.  A maior parte dos operadores possui associatividade da esquerda para a direita  Os operadores unários e de atribuição possuem associatividade da direita para a esquerda
  • 28.