The wrapper classes (Integer, Long, Short, Byte, Character, Boolean, Float, Double) are indeed also immutable.
Note that what you see happening also has to do with
autoboxing. If you do something like
i += 10; where i is an Integer object, this will be translated by the compiler to something like this:
So, afterwards, i will refer to another Integer object, while j still refers to the old one.