Tipos Primitivos
- https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
- Não aceitam NULL.
- Possuem valores default.
- Precisam ser inicializados (receber valor) para serem utilizados.
byte
Tamanho: 8 bits
Numérico
Declaração:
byte b;
byte b = 127;
→ tamanho máximo que pode receberbyte b = -128;
→ tamanho mínimo que pode receber
Não pode receber null
char
Tamanho: 16 bits
Alfanumérico
Declaração:
char c;
char c = 'A';
char c = 15;
Como é um único caractere não é possível as seguintes declarações:
char c = 'AA';
char c = -100;
Não pode receber null
short
Tamanho: 16 bits
Numérico
Declaração:
short s;
short s = 32767;
→ tamanho máximo que pode recebershort s = -32768;
→ tamanho mínimo que pode receber
Não pode receber null
int
Tamanho: 32 bits
Numérico
Declaração:
int i
int i = 2147483647;
→ tamanho máximo que pode receberint i = -2147483648;
→ tamanho mínimo que pode receber
Não pode receber null
long
Tamanho: 64 bits
Numérico
Necessita ter um L
ou l
no final para indicar para o compilador que é do tipo long
.
Declaração:
long l
long l = 9223372036854775807l;
→ tamanho máximo que pode receberlong l = -9223372036854775808L;
→ tamanho mínimo que pode receber
Não pode receber null
float
Tamanho: 32 bits
Numérico não inteiro (decimal)
Pode receber um f
no final para indicar para o compilador que é do tipo float
.
Declaração:
float f;
float f = 65f;
float f = 65.0f;
→ 3.402,823,5 E+38float f = -0.5f;
→ 1.4 E-45
Não pode receber null
double
Tamanho: 64 bits
Numérico não inteiro (decimal)
Maior que o float
Declaração:
double d;
double d = 1024.99;
→ 1.797,693,134,862,315,7 E+308double d = 10.2456;
→ 4.9 E - 32
Não pode receber null
boolean
Só aceita os valores true
ou false
.
Declaração:
boolean bo;
boolean bo = true;
boolean bo = false;
Não aceita os valores como string:
boolean bo = "true";
boolean bo = "false";
Não pode receber null
void
- Palavra reservada.
- Não é um tipo de variável.
- Serve para indicar que um método não tem retorno, não retorna nada.
Wrappers
- São objetos que representam os tipos primitivos.
- Auto-boxing (auto inicialização) e Unboxing.
- Seguem as mesmas regras dos primitivos.
- São declarados como se fossem classes (começando com letra maíuscula).
- São objetos e por isso é possível atribuir
null
à eles. - Possuem métodos utilitários como
get
evalueOf
.
Auto-Boxing
Byte
Declaração:
Byte b = 127
Byte b = -128
byte nullByte = null;
Character
Declaração:
Charactere c = 'A'
Charactere c = 15
Short
Declaração:
Short s = 32767
Short s = -32768
Integer
Declaração:
Integer i = 2147483647
Integer i = -2147483648
Long
Declaração:
Long l = 9223372036854775807l
Long l = -9223372036854775808L
Float
Declaração:
Float f = 65f
Float f = 65.0f
Float f = -0.5f
Double
Declaração:
Double d = 1024.99
Double d = 10.2456
Boolean
Declaração:
Boolean bo = true
Boolean bo = false
Boolean bo = Boolean.getBoolean("false");
→ OKBoolean bo = Boolean.valueOf("true");
→ OK
Unboxing
Atribuir um Wrapper à um tipo primitivo.
int i = new Integer(3);
int i = Integer.valueOf(1024);
boolean b = Boolean.TRUE;
boolean b = Boolean.getBoolean("false");
Diferença entre Auto-boxing e Unboxing
Auto-boxing = é passado um valor puro para um tipo de objeto.
Unboxing = é construído um objeto atribuindo-o a um tipo primitivo.
Tipos não primitivos
- String
- Number
- Object
- Qualquer outros objetos
String
Sequência de caracteres.
Declaração:
String texto = "Hello World";
Void
Com letra maiúscula.
É um tipo válido mas não representa nada, é uma classe vazia.
Void v;
Object
Objeto principal do Java, todos os outros objetos estendem a classe Object.
Object o = new Object();
Number
Pode receber atribuições de qualquer tipo numérico.
Number numero = Integer.valueOf(100);
Tipagem estática
O Java faz a verificação do tipo da variável em tempo de compilação.
Exemplo:
Integer numero = "123456789";
Quando um código com essa linha tentar ser compilado, o próprio compilador indicará um erro dizendo que o tipo Integer
não pode receber valores do tipo "String".
Tipagem forte
Significa que uma vez atribuído uma tipagem a uma variável, não é possível mudá-la.
Exemplo:
Caso uma variável seja criada dessa forma:
String texto = "meu texto";
Não será possível atribuí-la com um tipo diferente do inicial:
text = 1000;
→ Apresentará erro na compilação
Porém é possível atribuir um novo valor à essa variável caso ele seja do mesmo tipo:
texto = "olá mundo";
Tipo Inferido
Adicionado ao Java a partir da versão 10.
É possível criar uma variável sem atribuir a ela um tipo explícito:
var numero = Integer.valueOf("123456");
var texto = "Olá";
A tipagem forte continua existindo, a diferença é que a variável só vai receber um tipo quando o valor for atribuído a ela.
Modificadores de acesso
public
Pode ser acessada de qualquer lugar por qualquer entidade que possa visualizar a classe a que ela pertence.
private
Os métodos e atributos da classe definidos como privados não podem ser acessados ou usados por nenhuma outra classe. Esses atributos e métodos também não podem ser visualizados pelas classes herdadas.
protected
Torna o membro acessível às classes do mesmo pacote ou através de herança, seus membros herdados não são acessíveis a outras classes fora do pacote em que foram declarados.
default
A classe e/ou seus membros são acessíveis somente por classes do mesmo pacote, na sua declaração não é definido nenhum tipo de modificador, sendo este identificado pelo compilador.
Abstract
Esse modificador não é aplicado nas variáveis, apenas em classes e métodos. Uma classe abstrata não pode ser instanciada. Se houver alguma declaração de um método como abstract (abstrato), a classe também deve ser marcada como abstract.
Static
É usado para a criação de uma variável que poderá ser acessada por todas as instâncias de objetos desta classe como uma variável comum, ou seja, a variável criada será a mesma em todas as instâncias, a modificação ocorre em todas as demais. E nas declarações de métodos ajudam no acesso direto à classe, portanto não é necessário instanciar um objeto para acessar o método.
Final
Quando é aplicado na classe, não permite estender, nos métodos impede que o mesmo seja sobrescrito (overriding) na subclasse, e nos valores de variáveis não pode ser alterado depois que já tenha sido atribuído um valor.
Interfaces
Métodos abstratos
- Devem ser implementados por todos;
- Novos métodos quebram as implementações;
Métodos default
- São herdados a todos que implementam;
- Novos métodos não quebram as implementações;
Herança múltipla
Não possui herança múltipla (classes). Porém é possível implementar mais de uma interface.
Enum
Basicamente são dicionários de dados imutáveis.
Não é permitido criar novas instâncias.
O construtor é sempre declarado como private.
Por convenção, por serem objetos constantes e imutáveis (static final
), os nomes são em MAIÚSCULO.
Comentários (0)