How come this makes x and y not only the same value but the same object too? Does x = y automatically convert x into the same object as y? I thought this was only used to assign values not merge objects with one another.
'x' and 'y' are references to the Integer objects, not the objects themselves.
When you do x = y you are changing x's reference to be the same as y's.
So they are both pointing at the same object after that line.
It's not changing any values on the objects themselves.
It's changing what the variables are pointing at.