Tipos Primitivos

Saudações pessoal! Estou estudando java e estou com uma dúvida sobre como usar e para que serve os sufixos que colocam nos valores das variáveis na hora de iniciar ela.

o sufixo que digo é:

long l = 400000000000L;

Alguém por favor me ajude com essa dúvida?

Para que serve e quando usar os sufixos dos tipos primitivos?

No caso dos sufixos l, f e d, eles indicam o tipo do literal.

Por exemplo, qual o tipo do valor 100? Ele poderia ser um int, long, float, double. O compilador nesse caso vai tratar como inteiro. Mas no caso que você quiser que seja um float, basta escrever como 100f e resolvido.

Da uma olhada em aqui: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

1 curtida

Os sufixos dos tipos servem para o sistema saber como lidar de forma melhor com números com ponto flutuante. Exemplo:

float minhaVar = 5.5;      => O sistema lê isso como double.
float minhaVar = 5.5f;     => Agora o sistema como Float.

Agora um exemplo mais prático, na API LWGJL (legacy-2.9.3) para definir a cor de Enviroment você deve utilizar de números float para o RGB.

GL11.glSetColor(0.2, 0.2, 0.4); => Isso está errado porque o LWJGL lê isso como double!!!
GL11.glSetColor(0.2f, 0.2f, 0.4f); => Agora está certo! Não ocerrerão possiveis erros! :3

Vale lembrar que além dos tipos primitivos no java existem as classes para esse tipos, por exemplo, você declara int i = 0;, porém você pode acessar metodos estáticos de tratamento de Int’s, por exemplo:
(Eu sei, mais o código abaixo está em C# porém é facil entender como faz em java, acontece que esqueci se o Int tem o metodo parse ou nao… acho que tem ;p)

string s = "123";
int i = null;

try {
  i = Int.parse(s);
} catch (Exception ex){}

Console.WriteLine(i);

Output: 123

Espero ter ajudado :3

1 curtida

Na verdade, é para a JVM saber como lidará com os valores que estão sendo utilizados, tendo em vista que nem todos os sufixos se referem à pontos flutuantes

long x = 10000000000L;//Não tem ponto flutuante

1 curtida

@Luis_Augusto_Santos, agora tenta dividir isso por 3 e.e, vc vai ter um baita ponto flutuante e eu quis dizer a JVM quando me referia a palavra “sistema” :3 Vc está certo tb.

1 curtida

[quote=“Mint, post:6, topic:346638”]
agora tenta dividir isso por 3 e.e, vc vai ter um baita ponto flutuante
[/quote]Isso se aplica se e somente se for necessário realizar divisão, senão a JVM ignora?

1 curtida

sim neste caso, onde não haja a ponto flutuante não há nescessidade de declarar o sufixo: Ex:

int i = 2;
float f = 3;

double d = i+f; (acho que precisa de cast)
System.out.println(d);
1 curtida