Curso de Java - Antonio Alves - Aula 02

Preview:

Citation preview

Curso de JavaAula 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çaCom 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 conversorErro 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 OperadoresAula 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

Recommended