Olá Pessoal, tudo bom?
Hoje continuaremos a falar sobre tipos primitivos mas focados em seus literais, ou a representação no código fonte dos valores fixos, sem necessitar de processamento de dados para saber qual é o seu valor.
Literais
Se você já está um pouco mais familiarizado com os tipos primitivos, deve ter percebido que a palavra reservada new não é utilizada para dar valores as variáveis, pois você insere os valores diretamente, como podemos ver nos código abaixo:
1 2 3 4 5 |
boolean resultado = true; char cMaiusculo = 'C'; byte b = 100; short s = 10000; int i = 100000; |
Existem diversos tipos de literais os quais vamos dividir em 3 partes: Literais para Inteiros, Literais para Decimais e Literais para Caracteres e Strings.
Literais para Inteiros
Se o número termina com a letra L ou l isso caracteriza um tipo long, sendo recomendável utilizar o L maiúsculo devido a algumas fontes o L minúsculo é muito parecido com o número 1.
1 |
long l = 1000L; |
Se caso não tenha letra alguma é do tipo inteiro. Isso não significa que somente variáveis int podem ser criadas, mas podem ser criadas byte, short, int e até mesmo long que até o limite de tamanho das variáveis inteiras. Após esse valor, para o tipo long, poderão ser utilizados os literais do long.
Além disso, literais do tipo inteiro podem ser expressados em três tipos de sistemas numéricos:
- Decimal: Base 10, intervalo de 0 a 9, utilizado no dia a dia
- Hexadecimal: Base 16, intervalo de 0 a 9 mais as letras A a F
- Binário: Base 2, intervalo 0 a 1 (A partir do Java
O exemplo abaixo mostra a representação do número 26 para os três tipos de sistemas numéricos:
1 2 3 |
int valorDecimal = 26; int valorHexadecimal = 0x1a; int valorBinario = 0b11010; |
Literais para Decimais
Se você deseja representar um número float, você deverá utilizar a letra F ou f. Se não houver letra ou as letras D ou d, será do tipo double.
Além disso é possível utilizar notação científica utilizando as letras E ou e. Abaixo segue exemplo das representações acima:
1 2 3 |
double d1 = 123.4; double d2 = 1.234e2; //Mesmo valor de d1, mas em notacao cientifica float f1 = 123.4f; |
Literais para Caracteres e Strings
Literais do tipo char e String podem conter caracteres unicodes (UTF-16), podendo ser utilizado direto no código fonte, se o editor permitir. Senão deverão ser utilizados “Unicodes escapes” como por exemplo ‘\u0108’ (C maiúsculo com acento circunflexo), ou a frase Sí Señor em espanhol “S\u00ED Se\u00F1or”.
Sempre utilizar aspas simples para char e aspas duplas para Strings.
Existem um conjunto de caracteres que são especiais para utilização no código java:
- \b – backspace
- \t – tab
- \f – Nova Linha
- \r – Retorno ao começo da linha
- \n – Nova Linha e Retorno ao início do parágrafo (Soma do \f com o \r)
- \” – Aspas duplas
- \’ – Aspas simples
- \\ – Barra invertida
Usando Underscore para literais numéricos
A partir do Java 7, é possível inserir o underscore (_) entre qualquer literal numérico, permitindo assim melhorar a leitura do código, ao separar grupos numéricos, como cartões de crédito ou ips de máquinas, por exemplo:
1 2 3 4 5 6 7 8 |
long numeroCartaoCredito = 1234_5678_9012_3456L; long cpf = 012_345_678_90L; float pi = 3.14_15F; long hexBytes = 0xFF_EC_DE_5E; long hexWords = 0xCAFE_BABE; long maxLong = 0x7fff_ffff_ffff_ffffL; byte nybbles = 0b0010_0101; long bytes = 0b11010010_01101001_10010100_10010010; |
Apesar disso existem alguns pontos que o underscore não pode ser inserido:
- No início ou fim do número
- Adjacente ao ponto em um número decimal
- Adjacente ao sufixo F ou L
- Não pode estar nas representações de hexadecimal ou binário
1 2 3 4 5 6 7 8 9 10 11 12 13 |
float pi1 = 3_.1415F; //Invalido - adjacente ao ponto float pi2 = 3._1415F; //Invalido - adjacente ao ponto long cpf1 = 012_345_709_58_L; //Invalido - adjacente ao L int x1 = 5_2; //Valido int x2 = 52_; //Invalido - Nao pode estar no fim do literal int x3 = 5_______2; //Valido int x4 = 0_x52; //Invalido - Nao pode estar no prefixo do hexadecimal int x5 = 0x_52; //Invalido - Nao pode estar no início do literal int x6 = 0x5_2; //Valido int x7 = 0x52_; //Invalido - Nao pode estar no fim do literal |
finnaly{
Duvidas ou sugestões? Deixe seu feedback! Isso ajuda a saber a sua opinião sobre os artigos e melhorá-los para o futuro! Isso é muito importante!
Até um próximo post!
Leave a Reply