Cast automático de byte para char  XML
Índice dos Fóruns » Certificação Java
Autor Mensagem
TiagoTC
JavaTeenager

Membro desde: 09/02/2008 01:12:58
Mensagens: 189
Offline

Por que não ocorre um cast automático do tipo "byte" para o tipo "char" ? Um byte não cabe sempre em um char?

This message was edited 1 time. Last update was at 06/02/2010 19:40:36


Pérola: "Nunca coloque seu celular em um forno de microondas, pois isso faz com que a bateria exploda" - Manuais de telefones celulares
vmsb11
Java Ninja

Membro desde: 25/08/2008 12:35:00
Mensagens: 251
Offline

porq vc está realizando uma operação de soma de um byte + char....
vou dar um exemplo:
o limite do char é de 65000(estou arredondando)....
imagine que nessa operação de soma de byte + char o valor ultrapsse o limite máximo do tipo char....
por isso é necessário usar o cast neste caso para evitar que ocorra isso....
TiagoTC
JavaTeenager

Membro desde: 09/02/2008 01:12:58
Mensagens: 189
Offline

Acho que eu formulei mal a pergunta... A questão é que o código acima NÃO compila! Pra mim era pra compilar pois um byte cabe em um char... É essa minha dúvida.

Pérola: "Nunca coloque seu celular em um forno de microondas, pois isso faz com que a bateria exploda" - Manuais de telefones celulares
vmsb11
Java Ninja

Membro desde: 25/08/2008 12:35:00
Mensagens: 251
Offline

ah sim....
agora eu entendi a sua dúvida....
o código não funciona....
troque:

TiagoTC
JavaTeenager

Membro desde: 09/02/2008 01:12:58
Mensagens: 189
Offline

vmsb11 wrote:ah sim....
agora eu entendi a sua dúvida....
o código não funciona....
troque:



Mas então, eu sei que se fizer essa troca o código vai funcionar... Mas a minha dúvida é por que não funciona com o cast para (byte) ... É essa minha dúvida!

Pérola: "Nunca coloque seu celular em um forno de microondas, pois isso faz com que a bateria exploda" - Manuais de telefones celulares
rodrigo.bossini
GUJ Master
[Avatar]

Membro desde: 01/07/2008 20:59:17
Mensagens: 1055
Offline


Agora você consegue descobrir sozinho pq seu código não compila.

This message was edited 1 time. Last update was at 07/02/2010 08:03:42


http://www.rodrigobossini.com.br/

Meu Twitter:@rodrigobossini
Se uma pessoa fala português há 30 anos e ainda não aprendeu, por que é que vou acreditar que ela está programando em alguma linguagem de programação há apenas 10 anos e sabe o que está fazendo?
TiagoTC
JavaTeenager

Membro desde: 09/02/2008 01:12:58
Mensagens: 189
Offline

rod.attack wrote:
Agora você consegue descobrir sozinho pq seu código não compila.


Seguindo esse seu raciocínio, por que então o seguinte código compila normalmente?



O compilador neste caso não avisa nada sobre perda de precisão e tal...

Pérola: "Nunca coloque seu celular em um forno de microondas, pois isso faz com que a bateria exploda" - Manuais de telefones celulares
rodrigo.bossini
GUJ Master
[Avatar]

Membro desde: 01/07/2008 20:59:17
Mensagens: 1055
Offline

Eu quis dizer que, para valores pequenos (até 128 ) o compilador é capaz de verificar o bit pattern desse valor (obviamente em tempo de compilação) e dizer que ali ocorreria (COM CERTEZA) a perda de precisão.

Outro exemplo:



Agora o seguinte:



É óbvio que há possível perda de precisão e o compilador enxerga isso. Mas com o casting explícito você está avisando ele que tudo bem, vc está ciente da possível perda e arcará com as possíveis consequencias.
Lembrando novamente que o compilador somente é capaz de verificar o bit pattern dos números menores que 128 que estiverem digitados explicitamente no código.

This message was edited 2 times. Last update was at 07/02/2010 14:05:47


http://www.rodrigobossini.com.br/

Meu Twitter:@rodrigobossini
Se uma pessoa fala português há 30 anos e ainda não aprendeu, por que é que vou acreditar que ela está programando em alguma linguagem de programação há apenas 10 anos e sabe o que está fazendo?
 
Índice dos Fóruns » Certificação Java
Ir para:   
Powered by JForum 2.1.8 © JForum Team