Questão de certificação

E ai galera!!!

Seguinte, eu estava resolvendo uns simulados aqui e me deparewi com a seguinte questão:

[b]class B {
public static void main (String args[]) {
Long i1 = new Long(1);
Long i2 = new Long(i1);
System.out.print((i1==i2) + “,” + i1.equals(i2));
}}

What is the result of attempting to compile and run the program?

[/b]

Ao compilar e executar este código o resultado é “false, true” mas pela resolução que ele apresenta a resposta é compile-time error.
E então o que marcar na prova???

Se a prova for de JSE 1.5 é: false,true

Se for JSE 1.4 é: compile-time error

porque não existe nenhum construtor assim:

public Long(Long value){ }

o que existe é:

public Long(long value){ }

e na versão 1.5 foi inserido um novo recurso chamado autoboxing onde um objeto de uma classe Wrapper (Long, Integer, Double, etc) é convertido automaticamente para seu tipo primitivo correspondente (e vice-versa), no caso long, seria como fazer:

[code]long num;
Long numObj = new Long(10);

num = numObj;[/code]

Com JSE 1.5 isso aí funciona, com JSE 1.4 não compila!

Se você tiver Eclipse aí, muda a configuração dele pra 1.4 que você vai ver que dá erro!

Blz, valeu Jair Elton!!!

(i1==i2) => false pq ele vai olhar o objeto na memoria ?
i1.equals(i2) => true pq ele vai olhar o valor dos objetos ?

seria isso a explicação ?

quote => false pq ele vai olhar o objeto na memoria ?
i1.equals(i2) => true pq ele vai olhar o valor dos objetos ?[/quote]
Sim, no Java 1.5, porque no 1.4, como já foi dito, isso não compila!

vlw, nao compila por causa do constructor la ne

no 1.5 agora tem o autoboxing.
vlw