Os números de ponto-flutuante são definidos como um número, um símbolo decimal e mais os números que representam a fração.
double d = 11301874.9881024;
No exemplo anterior, o número 11301874.9881024 é um valor literal. Literais de ponto-flutuante são definidos como double (64 bits) por default, assim, se você quiser atribuir um literal ponto-flutuante para uma variável do tipo float (32 bits), você DEVE colocar o sufixo F ou f no fim do número. Se você não fizer isso, o compilador vai dar erro de perda de precisão, porque você estará tentando colocar um número maior num 'container' menor. O sufixo F ou f diz ao compilador que você sabe dos riscos inerentes a essa perda de precisão:
float f = 23.467890; // Erro de compilador, possibilidade de perda de precisão
float g = 49837849.029847F; // OK; tem o sufixo "F"
Opcionalmente você pode usar o D ou d para literal double, mas isso não é necessário por ser a atribuição default. Mas se você quiser 'incrementar' o código, digite à vontade.
double d = 110599.995011D; // Opcional, não requerido
double g = 987.897; // Sem o sufixo 'D', mas está OK porque o literal é double
Preste atenção nos literais que usam vírgula porque não vai compilar, como no exemplo abaixo:
int x = 25,343;
Literal boolean
Literais boolean estão representados no código por valores boolean. Um valor boolean pode ser definido com true ou false (verdadeiro ou falso). Embora em C (e algumas outras linguagens) é comum usar números para representar true e false, ISSO NÃO ACONTECE EM JAVA. Lembre-se, Java não é C++.
boolean t = true; // Legal
boolean f = 0; // Erro de compilação!
Esteja atento para as questões que usam números onde boolean é requerido. Você pode ver um if que usa um número no exemplo abaixo:
int x = 1; if (x) { } // Erro de compilador!
Literal caracter
Um literal caracter é representado por um caracter simples em aspas simples.
char a = 'a';
char b = '@';
Você pode usar a notação Unicode para representar um caracter usando o prefixo u conforme exemplo:
char letterN = 'u004E'; // A letra 'N'
Lembre-se, caracteres são apenas inteiros não assinados 16 bits. Isso significa que você pode atribuir um literal número, assumindo que ele caberá na escala 16 bits não assinada (65535 ou menos). Para o exemplo, todas as atribuições seguintes são legais:
char a = 0x892; // literal octal
char b = 982; // literal int
char c = (char) 70000; // Cast requerido; 70000 está fora da escala
char d = (char) -98; // Ridículo, mas legal
E as seguintes construções não são legais e geram erro de compilação:
char e = -29; // Possível perda de precisão (número negativo); precisa de cast
char f = 70000 // Possível perda de precisão; precisa de cast
Você também pode usar um caracter 'escape' se quiser representar caracteres que não podem ser inseridos dentro de um literal, incluindo caracteres de avanço de carro, nova linha, tab horizontal, backspace e também aspas simples e duplas.
char c = '"'; // Aspas duplas
char d = '
'; // Nova linha
Agora que você está familiarizado com os tipos de dados primitivos e suas escalas, você deve estar habilitado para identificar o tipo de dado para uma dada situação.