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 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.
4. 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
5. 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
6. 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
7. 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
8. 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.
9. 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
10. Tipo long
Tipo Contém Default Tamanho Faixa de
valores
long Inteiro com
sinal
0 64 Pode assumir
valores entre
-263 e 263 - 1
11. 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
12. 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.
13. 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
14. 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)
15. 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.
16. 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
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
21. 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
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.
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 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