olá a todos
tenho duas duvidas a respeito da certificação scjp6. As duas são com respeito ao livro KS&BB.
duvida 1
boxing, == e equals()
no livro diz que
Integer i1 = 10;
Intege i2 = 10;
se(i1 != i2)
System....("objetos diferentes"); //são mesmo objetos diferentes
se(i1.equals(i2))
System......("relativamente iguais"); //são iguais porque seus valores são iguais
se(i1 == i2)
System......("objetos iguais"); //são iguais pois são instancias de Integer
Até entendi o código acima, mas na minha máquina não funcionou como esperado. O primeiro if tem resultado false, então não imprime “objetos diferentes” como mostra no livro.
Entendi na explicação do livro(inglês e port) que tanto o teste != quanto == deveriam ser true nas comparações de duas instancias Integer com valores iguais.
Estou correto ou entendi mal? Ou o livro explica mal?
Dúvida 2
O livro diz que não é possivel ampliar um tipo wrapper. Corretissimo. Um Integer não pode se transformar num Long.
O livro diz que não é possível ampliar e depois fazer boxing.
O que seria a ampliação do código abaixo? Ampliar o byte? Ampliar no que? Ampliar o byte primitivo para um long primitivo para depois fazer do long um Long e passar para o método não pode?
class WidenAndBox {
static void go(Long x) { System.out.println("Long"); }
public static void main(String [] args) {
byte b = 5;
go(b); // must widen then box - illegal
}
}
