一直做C++开发,对java存储一直很迷惑。
在java的执行环境中,存储区域一般分为两类:
栈内存:该区域存储基本数据类型。
堆内存:存储实际的对象内容。
实际的对象存储比一般变量复杂,其分为两部分:对象的内容以及对象内容的其实地址,所以在对象之间进行赋值时,其实赋值的是对象的地址。
比如:
Box b1 = new Box(1);
Box b2 = new Box(2);
b2=b1;
那么实际上是将b1的地址赋给了对象b2,二者内存中的同一块存储区域,任何一个对象对于属性的修改都会影响另外一个对象内部属性的值。