Cast

5 respostas
Murilo_Locatelli

Pessoal…

To com uma duvida sobre cast!
Segue o codigo:

Long L1= 0L;
Double D2 = 0.0;

Double D1= L1 + (D2  / 100.0);

Pq nao eh necessario fazer um cast explicito??
E no caso abaixo eh necessario(dá erro se nao fazer cast):

Long L1= 0L;
Double D2 = 0.0;

Double D1 = L1 + D2;

Vlw

5 Respostas

neohacker

Não vejo nenhum erro ai …
Que erro está mostrando … CastException ??

Murilo_Locatelli

No segundo caso eu tenho que fazer um cast como mostrado abaixo para nao dar problema na compilacao, ja no primeiro caso nao é necessario.

Long L1= 0L;  
Double D2 = 0.0;  
   
Double D1 = (Double) L1 + D2;

vlw ai!

neohacker

mjl:
No segundo caso eu tenho que fazer um cast como mostrado abaixo para nao dar problema na compilacao, ja no primeiro caso nao é necessario.

Long L1= 0L;  
Double D2 = 0.0;  
   
Double D1 = (Double) L1 + D2;

vlw ai!

Agora sim ta dando erro …

code(L1 + D2)[/code] Assim você pode fazer mas é totalmente desnecessário pois o Java faz um Cast para o maior valor da conta

ou isso daria erro: Long D1 = L1 + D2;
mas o que o você colocou lá no começo aqui não da erro não …
Será que é a versão do Java … qual é a seu JDK ??

ViniGodoy

A idéia é mesmo usar os wrappers de tipo primitivo?

Nesse caso, existem vários unboxings e auto-boxings no processo…

Murilo_Locatelli

neohacker:
mjl:
No segundo caso eu tenho que fazer um cast como mostrado abaixo para nao dar problema na compilacao, ja no primeiro caso nao é necessario.

Long L1= 0L;  
Double D2 = 0.0;  
   
Double D1 = (Double) L1 + D2;

vlw ai!

Agora sim ta dando erro …

code(L1 + D2)[/code] Assim você pode fazer mas é totalmente desnecessário pois o Java faz um Cast para o maior valor da conta

ou isso daria erro: Long D1 = L1 + D2;
mas o que o você colocou lá no começo aqui não da erro não …
Será que é a versão do Java … qual é a seu JDK ??

bom, ontem eu estava no trabalho, e agora estou em casa e realmente nao da problema no primeiro exemplo que eu mostrei, acho q o motivo disso sao IDEs diferentes, ja que uso a mesma versao do JDK, pois no meu trabalho tive q fazer este cast para poder compilar:

Long L1 = 0L;
Double D2 = 0.0;

Double D1 = (Double) L1 + D2;

e ja no codigo abaixo nao precisou:

Long L1 = 0L;
Double D2 = 0.0;

Double D1 = L1 + (D2  / 100.0);

acho q nois dois eu teria que fazer o cast pois o dois tem o mesmo tamanho (64 bits) entao como nao existe um tipo maior q o outro, nao tem nenhum q pode ser promovido para um tipo maior, por isso o cast explicito!
Mas pode ser a questao dos unboxings e auto-boxings ou a IDE.

Mas obrigado ai,
flw!

Criado 28 de dezembro de 2007
Ultima resposta 29 de dez. de 2007
Respostas 5
Participantes 3