Why on earth Java needs to cache numbers,(reply>), Creating an Object in Java is expensive. So Java assumes that you are most likely to access the numbers from -128 to 127 and makes them in advance, so that every time you request an Integer of that range it can simply give you an reference to an existing object.