[quote=maior_abandonado]bom…talvez eu possa dar o meu pitaco, mesmo sem ter muita certeza em relação ao final…
começando vamos aos principios basicos da pergunta:
== comparando objetos verifica se são o mesmo objeto, comparando tipos primitivos verifica se o valor das variaveis de tipos primitivos é o mesmo… (para se comparar equivalencia entre objetos deve-se usar o equals)
quando vc mandaum int para um metodo que exige um Integer, o int é convertido para um Integer em tempo de execução (isso se chama auto-boxing)
ok… agora vamos pensar um pouco, a primeira coisa a ser feita, foi ter comparado dois objetos com o == ,ambos foram criados dando um new Integer, por isso em cada um foi criado um objeto novo, sendo objetos diferentes na memoria, sendo assim essa primeira comparação ja da false.
depois foram enviados dois ints pro metodo e eles foram convertidos em dois Integers (dois integers, diferentes e não duas referencias a um integer que vale 2), sendo assim vai da false tb… e idem a linha seguinte…
sendo assim false false false…
importante pra quem vai tenta o exame
uma dica que posso da pra quem for tenta o exame, é tenta ter um pinguinho de malandragem tb pra eliminar possibilidades, veja o segundo e o terceiro boolean impressos, em ambos os casos foram enviados dois ints iguais, foram convertidos para Integers e depois comparados… se um der false o outro tem que da false tb, se um da true o outro tb tem que da true… (isso elimina a opção B)
ps do erro de digitação, falto o underline na linha 11, mais nao acho que seja proposital por isso eu nao iria na ultima opção…[/quote]
errado, a resposta correta é a B (false true false)
já compilei e rodei e da isso mesmo.
Pela sua explicação a resposta seria false false false, mas NÃO é.
A dúvida está por que o i1 e i2 dão false sendo que i3 e i4 dão true