Erro de conversão

8 respostas
pedroabs

por que isso não funciona?

Integer i = new Integer(3); Double z = i;

8 Respostas

renamed
Os limites inferior e superior comportados por um Double são maiores que os limites comportados por um int. Para saber os extremos dos dois, utilize:
System.out.println(Double.MAX_VALUE);
System.out.println(Double.MIN_VALUE);
		        
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);

ok?

nel

Porque Integer é um número inteiro e Double um flutuante?
São objetos distintos que armazenam valores diferentes.

Atualizando: e fique atento ao que o renamed disse, o tamanho de armazenamento deles são diferentes.

Abraços!

pedroabs

e porque isso funciona?

int i = 1;
double d = i;
renamed

Releia minha resposta

pedroabs

por que isso NÃOfunciona?

Integer i = new Integer(3); Double z = i;

e porque isso funciona?

int i = 1; double d = i;

nel

Se vocês faz:

Integer i = 1; double d = i;

Não funciona pois está tentando colocar dentro do double um objeto diferente, ou seja, incompatível. Se faz:

int i = 1; double d = 1;

Ele aceita pois int é do tipo primitivo, ou seja, não se trata de um Object e sim de um valor.

Mas para o caso do Integer, a solução é esta:

Integer i = 1; double d = i.intValue();

Abraços!

marcosvidolin

Olá

  • int e double são primitivos. neste caso você pode atribuir um int para um double;
  • Integer e Double são classes wrappers. Aqui não é possível atribuição de tipos de objetos diferentes;
  • é valido atribuir um int para um Double ou Integer (autoboxing);

Qualquer coisa da uma olhada nas classes wrappers e em regras de boxing.
Espero ter ajudado
[]'s

pedroabs

Obrigado Marcos !

Criado 30 de outubro de 2009
Ultima resposta 30 de out. de 2009
Respostas 8
Participantes 4