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!
(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