コード:
System.out.println(number == prime);
System.out.println(number + " " + prime);
System.out.println(number.getClass() + " " + prime.getClass());

出力:
false
2287 2287
class java.lang.Integer class java.lang.Integer

質問:
1:number == primeの結果が、同じ値なのにfalseになるのは、numberとprimeが別のオブジェクトだからですか?
2:どういう場合にこういうことになりますか?

1.{2,3,5,7}から100までの素数のArrayListをつくる
2.1のArrayList.get(index)をつかって値を取り出して、10000までの素数のArrayListを新しくつくる
で、2を使って素数判定をやったらこういうことになったんですけど、理由がまったくわからないです