You appear to have arrived in the wrong forum, but don't worry; I can move your question.
Have a look at the documentation for the Integer#valueOf method, and the JLS (=Java® Language Specification) about boxing conversions. Look particularly at what it says about values ≥ −128 and ≤ 127. That should give you a hint why you are getting strange results from the == operator. Another reason not to use ==.
If you can't work out the problem from those resources, tell us, and we shall drop some more hints.
And then we all jump out and yell "surprise! we got you this tiny ad!"