Immutable does not mean that
a can never equal another value. For example,
String is immutable too, but I can still do this:
String str = "hello"; // str equals "hello" str = str + "world"; // now str equals "helloworld"
str was not changed, rather
str is now a completely newly instantiated object, just as your
Integer is. So the value of
a did not mutate, but it was replaced with a completely new object, i.e.