O tipo do resultado com operações sempre será de um tipo nativo (mesmo que ambos os operandos sejam de tipos de referência)

 

int i1 = 1;

Long Lng = 1L; // a variável de referência é unboxed para realizar a operação

int i2 = i1 + Lng; // o resultado é um long – nativo

Teste.java:8: possible loss of precision

int i2 = i1 + Lng;

required: int

found: long

 
 

 
 

 
 

Float f = 5F;

Double d = 5D;

Float f2 = f + d;
// o resultado é um double – nativo

Teste.java:7: incompatible types

Float f2 = f + d;

required: Float

found: double

 
 

→ quando fazemdos f + d, provavelmente o compilador faz:

float f1 = f.floatValue() // floatValue() retorna o tipo primitivo float

double d1 = d.doubleValue() // doubleValue() retorna o tipo primitivo double

f1 + d1 (resulta em um tipo double)

Anúncios
Esta entrada foi publicada em Java com as etiquetas , . ligação permanente.

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão /  Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão /  Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão /  Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão /  Alterar )

w

Connecting to %s