[RESOLVIDO] Exercicio da Caelum errado?

Estava fazendo o simulado da Caelum e me deparei com a pergunta abaixo, e a resposta correta é a letra B, com exceção de uma coisa: o ultimo System.out.println(b==new Boolean(false)); deveria imprimir true, estou certo? Ele faz unboxing e compara os valores booleanos, mas na resposta o ultimo valor é dado como false.

Então a pergunta não tem resposta correta, ou eu que errei?

Se eu errei avisa ae pra poder adquirir conhecimento. :lol:

System.out.println(5 < new Integer(6));
System.out.println(new Integer(6) == new Integer(6));
System.out.println(new Integer(5) < new Integer(6));
 
Object o = 54.5;
System.out.println(o.getClass().getName());

Boolean b = false;
System.out.println(b==false);
System.out.println(b==Boolean.FALSE);
System.out.println(b==new Boolean(false));

Pergunta: Qual será a saída gerada por essas linhas?

A. false true true java.lang.Object true false false
B. true false true java.lang.Double true true false
C. O código não compila pois não podemos comparar referências com o sinal ‘<’.
D. O código não compila pois não podemos atribuir um tipo primitivo com uma referência.
E. false false true java.lang.Object false true false

Valeu

[quote=giovaniufop]Estava fazendo o simulado da Caelum e me deparei com a pergunta abaixo, e a resposta correta é a letra B, com exceção de uma coisa: o ultimo System.out.println(b==new Boolean(false)); deveria imprimir true, estou certo? Ele faz unboxing e compara os valores booleanos, mas na resposta o ultimo valor é dado como false.

Então a pergunta não tem resposta correta, ou eu que errei?

Se eu errei avisa ae pra poder adquirir conhecimento. :lol:

System.out.println(5 < new Integer(6));
System.out.println(new Integer(6) == new Integer(6));
System.out.println(new Integer(5) < new Integer(6));
 
Object o = 54.5;
System.out.println(o.getClass().getName());

Boolean b = false;
System.out.println(b==false);
System.out.println(b==Boolean.FALSE);
System.out.println(b==new Boolean(false));

Pergunta: Qual será a saída gerada por essas linhas?

A. false true true java.lang.Object true false false
B. true false true java.lang.Double true true false
C. O código não compila pois não podemos comparar referências com o sinal ‘<’.
D. O código não compila pois não podemos atribuir um tipo primitivo com uma referência.
E. false false true java.lang.Object false true false

Valeu
[/quote]

Ja pensou em jogar pro eclipse?

:wink:

acabei de jogar pro eclipse e deu TRUE. Devia ter jogado antes para o eclipse assim naum ia precisar perguntar no forum adhfuadhfda

flw

[quote=giovaniufop]acabei de jogar pro eclipse e deu TRUE. Devia ter jogado antes para o eclipse assim naum ia precisar perguntar no forum adhfuadhfda

flw[/quote]

Não mas não é isso que eu quiz dizer. Até acho legal vc jogar no forum tbm quando não souber. É porque jogar no compilador e simular algumas outras situações faz com que vc aprenda mais. Ok? Duvidas sempre jogamos no compilador. Isso é tão importante quanto revisar um capitulo.

:wink:

E ai qual foi a conclusão que vc chegou da resposta?

Conclusão, TRUE, por que o compilador faz o unboxing e compara os booleanos.

:wink:

Vcs realmente testaram isso no eclipse? Pq a última saída é false.

é pra fala verdade agora eu olhei aki e tinha testado errado msm.

valeu por informar, já ia aprendendo coisa errada rkkk

Eu tinha declarado b como primitivo boolean e não como Objeto Boolean, olha o codigo, assim dava true haua

[code]
System.out.println(5 < new Integer(6));
System.out.println(new Integer(6) == new Integer(6));
System.out.println(new Integer(5) < new Integer(6));

Object o = 54.5;
System.out.println(o.getClass().getName());

boolean b = false;
System.out.println(b==false);
System.out.println(b==Boolean.FALSE);
System.out.println(b==new Boolean(false)); [/code]

VALEU KRA