ValueOf

ops, galera tem uma questão interessante que não consegui achar a explicação pra isso!

10. Integer i1 = Integer.valueOf("128");
11. Integer i2 = Integer.valueOf("128");
13. Boolean b1 = Boolean.valueOf(true);
14. Boolean b2 = Boolean.valueOf("TRUe");
15. System.out.println((i1==i2) + "," + (b1==b2));

Qual a saída? Compila? Erro Runtime?

Oi,

Se eu entendi sua dúvida correto… b1 e b2 referem ao mesmo objeto, porque Boolean.valueOf() sempre retorna Boolean.TRUE ou Boolean.FALSE por razões de eficiência e consumo de memória. Como sabemos que só pode existir dois valores distintos(true/false), não faz sentido ficar criando novos objetos. Se você quer um novo objeto Boolean, precisa usar new Boolean(…)

Ainda que os objetos são nossos amigos… o excesso de objetos não é um amigo da eficiência. :slight_smile:

Diz o javadoc:

-Sami

minha opinião:
ao criar objetos Boolean, o valor passado na String não é case sensitve.
compila, roda, imprime fale, false.
se não for isso, explicações por favor… :mrgreen:

[]'s

jbgt, o codigo compila, roda e imprime “false, true”, pelos motivos citados pelo Sami.

não tinha lido a primeira resposta atentamente… :oops:
dei uma olhada na especificação e é isso mesmo, o metodo valueOf de Boolean não aloca um novo objeto.
valew!!!

[]'s

Blza Sami, não sabia desse detalhe! 8)