28
Curso de Java Aula 02 – Tipos e operadores

Curso de Java - Antonio Alves - Aula 02

Embed Size (px)

Citation preview

Page 1: Curso de Java - Antonio Alves - Aula 02

Curso de JavaAula 02 – Tipos e operadores

Page 2: Curso de Java - Antonio Alves - Aula 02

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

Page 3: Curso de Java - Antonio Alves - Aula 02

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.

Page 4: Curso de Java - Antonio Alves - Aula 02

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

Page 5: Curso de Java - Antonio Alves - Aula 02

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

Page 6: Curso de Java - Antonio Alves - Aula 02

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

Page 7: Curso de Java - Antonio Alves - Aula 02

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çaCom 0x ou 0X e os outros dígitos são representados por caracteres de 0 a F para números com base 16

Page 8: Curso de Java - Antonio Alves - Aula 02

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.

Page 9: Curso de Java - Antonio Alves - Aula 02

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

Page 10: Curso de Java - Antonio Alves - Aula 02

Tipo long

Tipo Contém Default Tamanho Faixa de valores

long Inteiro com sinal

0 64 Pode assumir valores entre -263 e 263 - 1

Page 11: Curso de Java - Antonio Alves - Aula 02

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

Page 12: Curso de Java - Antonio Alves - Aula 02

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.

Page 13: Curso de Java - Antonio Alves - Aula 02

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

Page 14: Curso de Java - Antonio Alves - Aula 02

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)

Page 15: Curso de Java - Antonio Alves - Aula 02

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.

Page 16: Curso de Java - Antonio Alves - Aula 02

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

Page 17: Curso de Java - Antonio Alves - Aula 02

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

Page 18: Curso de Java - Antonio Alves - Aula 02

Problemas em conversões de narrowing(redução)

int

byte

Page 19: Curso de Java - Antonio Alves - Aula 02

Sem uso de conversorErro em tempo de compilação.

Page 20: Curso de Java - Antonio Alves - Aula 02

Com conversão de tipo

Page 21: Curso de Java - Antonio Alves - Aula 02

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

Page 22: Curso de Java - Antonio Alves - Aula 02

Expressões e OperadoresAula 02

Page 23: Curso de Java - Antonio Alves - 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.

Page 24: Curso de Java - Antonio Alves - Aula 02

Operadores

Page 25: Curso de Java - Antonio Alves - Aula 02

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

Page 26: Curso de Java - Antonio Alves - Aula 02

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

Page 27: Curso de Java - Antonio Alves - Aula 02
Page 28: Curso de Java - Antonio Alves - Aula 02

Oparadores unários e binários