[quote=sergiotaborda][quote=dntalemao]Galera, quando vou declarar assim:
double d=10;
ai vai acontecer a conversão implícita de int para double, então o uso do “d” nunca se fará necessário? Já que o “d” serve apenas para identificar. Exemplo:
double cm=100d;
já o “f” do float tem finalidade, como por exemplo forçar uma variável a ocupar o espaço de um float, já que por padrao, o java considera todo numero de ponto flutuante um double.
float f=10.0; //resultará em erro no compilador.
float f=10.0f; //maneira correta.
O “d” seria apenas representativo?
[/quote]
Não. O d é a forma de escrever um double literal.
Quando vc escreve 01234 isto não é um inteiro igual a 1234. É um octal.
Quando vc escreve um literal vc deve escreve o literal corretamente e nunca confiar na promoção.
Tente isto
Double d = 10;
Não vai funcionar dando “Type mismatch: cannot convert from int to Double”.
Porquê ? (pense um pouco antes de continuar)
A promoção só funciona para primitivos. Quando vc escreve 10 isto significa um inteiro. Sempre. O compilador pode fazer a promoção - se ele conseguir- mas o correto é colocar o d para indicar que se pretende um double.
O código acima não funciona porque o compilador entende assim “10 é um inteiro e está sendo atribuido a uma variável de objeto, então preciso fazer auto-boxing” ai ele muda o codigo para
Double d = Integer.valueOf(10);
Ai ele vê "Hum… não dá para por um Integer num Double, então não dá para por um int num Double. Ai ele produz aquela mensagem de erro.
Mas se vc usar d ele troca o codigo para
Double d = Double.valueOf(10);
O que , obviamente, funciona.
As formas literais dos tipos são importantes e devem ser usadas explicitamente.
[/quote]
valeu Sergio