Please choose an appropriate title for your question that explains what problem you are facing.
15 is a primitive that is autoboxed to an Integer object. Behind the scenes however, the compiler does not invoke new Integer(15) but Integer.valueOf(15).
The difference between the two is that the valueOf method works with an internal cache that ranges from -127 - 128, hence two objects created with valueOf that are in that range will pass the == test
new Integer ALWAYS instantiates a new object, regardless if the number is 1, 5 or 123131.