Literais do Java
Autor: José Anderson | Publicado: 2012-05-05T18:06:00-03:00

Resumidamente, literais são os valores dos tipos primitivos digitados diretamente no código-fonte de um programa escrito em Java, e nós já os utilizamos nos exemplos anteriores.

Java possui literais para os oito tipos primitivos existentes e o tipo&nbsp;String. Então um integer, um float ou um char representados diretamente no código-fonte são exemplos de literais primitivos.


Literais de Inteiros

Os números inteiros são representados de três formas em Java: decimal, octal e hexadecimal.

Decimal: É a forma mais comum de representação de um inteiro (até porque é a representação&nbsp;da numeração de base 10 empregada em nosso cotidiano). Os literais inteiros decimais são representados pelos dígitos 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9.

int valorCem = 100;
Octal: É a representação numérica de base 8. Utiliza-se o dígito 0 prefixado ao número para representar um literal octal. São representados pelos dígitos 0, 1, 2, 3, 4, 5, 6 e 7.

int valorCem = 0144; //igual ao 100 decimal
Hexadecimal: É a representação numérica de base 16, que utiliza 10 símbolos numéricos e 6 símbolos alfabéticos para representação do intervalo 0 ao 15. Para representar um literal hexadecimal, é necessário prefixar 0x (zero xis) ao número. Os literais hexadecimais são representados pelos dígitos 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E e F.

int valorCem = 0x64; //igual ao 100 decimal
int valorDuzentos = 0xC8; //igual ao 200 decimal
A linguagem Java faz distinção do tamanho da caixa aos dígitos adicionais quando se trata de representação hexadecimal, então 0x é a mesma coisa que 0X, e 0XCAFE é igual a 0xcafe.

Os literais inteiros são reconhecidos como tipo int pelo Java. 
Caso você deseje especificar um literal como do tipo long, utilize os sufixos "l" ou "L" após os números.

long valorCobol = 0xC000B000000L;
long valorLongo = 0XFFFFFFEEEEAAAl; // atente-se à letra 'l' minúscula.
long outroValor = 569885634L;

Literais de Ponto Flutuante

Os literais de ponto flutuante são representados da seguinte forma: o número, o símbolo decimal "." (ponto) e os números que representam a parte fracionária.

double numeroReal = 15423.6533456:
Além da forma convencional, existe outra forma de representar um literal de ponto flutuante: utilizando notação científica, ou seja, utilizando o número seguido da letra "E" ou "e" mais o expoente de base 10.

double notacaoCientifica = 10.987e-4;
float milhao = 1e9F;&nbsp; // é equivalente a 1.000.000.000
Todo literal Java é reconhecido como do tipo double pelo compilador. 
Caso você queria representar um literal de ponto flutuante em Java, é obrigatória a utilização dos sufixos "f" ou "F" após o número.

float valorFloat = 6525.45867F;
float outroFloat = 234.222f;
Você pode utilizar os sufixos "D" e "d" para representar um double.

Como dito anteriormente, o compilador já entende literais de ponto flutuante como double caso o literal contenha o ponto ou símbolo. Do contrário, utilize os sufixos "d" ou "D" para representar esses números como double.

double pontoFlutuante = 65258987765D;
double numeroDouble = 12d;

Caso a parte numérica seja 0, ela pode ser omitida desde que se adicione o ponto e a parte fracionária.

float numeroFloat = .565f;
Double numeroFloat = .00049;


Literais de Booleanos

Java suporta apenas dois literais para representar booleanos: o true (verdadeiro) e o&nbsp; false (falso).

boolean ligado = false;
boolean desligado = true;

Literais de Caractere e Strings
Os literais de caractere correspondem a apenas um caractere entre aspas simples. 
Outra forma de representar um caractere em Java é utilizando a representação unicode, onde é escrito um número hexadecimal prefixado com "\u" entre aspas simples. 

char caractere = 'z';
char caractereUnicode = '\u007A'; // é equivalente ao literal 'z'

Já os literais de strings são representações de código-fonte do objeto String 
e são compostos por um ou vários caracteres agrupados entre aspas duplas.

String frase = "O rato roeu a roupa...";
String codigo = "S.O.S";
String resultado = "O valor da soma é: ";
A linguagem de programação Java também suporta algumas sequências de escape especiais para literais char e String:


     Escape     Unicode     Descrição   
     \b     \u0008     caractere de retrocesso (backspace - BS)   
     \t     \u0009     tabulação horizontal tab (horizontal tab - HT)   
     \n     \u000a     quebra de linha (linefeed - LF)   
     \f     \u000c     quebra de página (form feed - FF)   
     \r     \u000d     retorno de carro (carriage return - CR)   
     \"     \u0022     aspas (double quote - " )   
     \'     \u0027     apóstrofo (single quote - ' )   
     \\     \u005c     barra invertida (backslash - \ )   


Vamos criar um programa para fixar o que foi aprendido hoje: crie uma classe como o nome Literais.java.

public class Literais {
 public static void main(String[] args){
  
  // Literais Inteiros
  
  byte   b = 127;
  short  s = 077;
  int    i = 0x050;
  long   l = 111000;
  
  // Literais de Ponto Flutuante
  
  float  f1 = 0.00000159f;
  float  f2 = .56f;
  float  f3 = 16e5F;
  double d1 = 1546.578;
  double d2 = 19999999D;
  
  // Literais Booleanos
  
  boolean b1 = true;
  boolean b2 = false;
  
  // Literais de Caracteres
  
  char c1 = '@';
  char c2 = '\uFFFF';
  
  // Literais de Strings
  
  String s1 = "Texto qualquer.";
  String s2 = "Outro texto qualquer.";
  String s3 = "Primeira linha.\nSegunda linha.";
  
  // Apresentando os valores na tela
  
  System.out.println(b);
  System.out.println(s);
  System.out.println(i);
  System.out.println(l);
  System.out.println(f1);
  System.out.println(f2);
  System.out.println(f3);
  System.out.println(d1);
  System.out.println(d2);
  System.out.println(b1);
  System.out.println(b2);
  System.out.println(c1);
  System.out.println(c2);
  System.out.println(s1);
  System.out.println(s2);
  System.out.println(s3);
 }
}

Bom, no próximo encontro, eu irei falar sobre atribuições e conversões (casting) de valores em Java. Para exercitar, faça esse programa novamente e modifique o valor das variáveis várias vezes. 
Até o nosso próximo encontro!