It doesn’t even have to change temperature, it is enough that the water remains in the bottle for few days for plastic to start “decomposing” (probably not the correct word for it). And by the time you buy the bottle, it has been long since it was filled in the first place.
Oh, and the expiration date on the water bottles? Obviously it’s not the water getting stale. It’s for the plastic.
It’s the opposite, everything is passed by reference but primitives are also addresses and therefore passed by value
You can’t pass objects or functions as value