本帖最后由 曾玉锋 于 2013-3-17 15:14 编辑
我来补充一点:
1.结构是值类型,在栈上存储。
类是引用类型,在堆上分配实际空间存储,在栈上存储对象在堆上的地址。
2.结构类型的变量是在栈上创建,int a=1;int b=1; 虽然a,b在栈上各自的空间中存储的都是值1,但是他 们的存储位置是不一样的。
下面一个例子:
int a=1;
int c=a;
虽然,c的值是由a赋值,但a只是copy了一份值(1)到c空间,所以,改变a的值对c是没有影响的。
而类类型的变量是在栈上创建,存储的是在堆中对象的地址
例:
假如有一个Person类,Person类有属性Name
Person a=new Person();
Person c=a;
a复制了一份a中new Person()在堆空间中的地址给c, 如果通过a改变new Person()对象的Name,则c的值也就改变了。
小结:结构类型的变量就像一个封闭的空间,只要本身不改变,则永远不变。
而类类型的变量如果和其它变量拥有共同的堆地址(交集),则若堆地址改变,所有引用该堆地址的变量都发生改变。
|