se eu declarar uma variavel desta maneira
float value=2.5; // java considera como double
desta outra forma
float value=2.5f;//desta forma java condidera com float
é isso mesmo galera estou com dúvidas
se eu declarar uma variavel desta maneira
float value=2.5; // java considera como double
desta outra forma
float value=2.5f;//desta forma java condidera com float
é isso mesmo galera estou com dúvidas
A seguinte linha não compila:
float value = 2.5;
Ela não compila pois literais de ponto flutuante em Java são double e um valor double não necessariamente “cabe” em um float.
o mesmo vale pra long cara…?
Não. Literais inteiras em Java são do tipo int. A linha seguinte faz uma conversão de int para long:
long value = 5;
Essa conversão ocorre neste caso porque long é um tipo “maior” do que int, por isso pode ser feita sem problemas.
No caso de tipos inteiros “menores” do que int, como byte ou short, o compilador pode ser esperto. As linhas seguintes compilam, mesmo eu tentando atribuir uma literal inteira a tipos que são “menores” que int:
byte value = 3;
short value2 = 5;
Nestes casos, o compilador percebe que o valor da literal cabe nos tipos byte e short e faz a conversão em tempo de compilação.
Daí você deve imaginar porque o compilador não faz uma conversão dessas no caso do double e do float. Em uma palavra: precisão. Como o tipo double suporta uma precisão maior que o tipo float, mesmo o número 2.5 é maior do que cabe numa variável float.