当我们定义联合变量时,系统分配给它的内存单位是:占用内存最大的成员所请求的容量。
使用联合变量的目的是通过统一的内存段来存储几种不同类型的数据,但需要注意的是,任何时候只能存储一种类型,而不是集中存储;另外,如果添加了新的成员变量,原来的成员变量的值将会被覆盖。
扩展信息:
同一个内存段可以用来存储几种不同类型的成员,但任何时候都只有一个备份其中,而不是同时几个。也就是说,任何时候只有一个成员在工作,其他成员都不工作,所以他们不存在并且同时工作。
联合变量中的有效成员是新成员存储后存储的最后一个成员,原来的成员失去作用。联合变量的地址和其成员的地址是相同的地址。
对象是引用类型,因此将对象分配给另一个变量实际上只是分配一个内存地址。
换句话说,如果所有对象都具有相同的地址,则更改该地址的值也会更改具有相同地址的其他对象。
示例:
Lista=newArrayList();("a");Listb=a;("b");n(a);//输出:[a,b]
这里,a和b是同一个地址。
但是,如果有分配,则不适用。
Stringa="a";
Stringb=a;
b="b";
n(a);//输出:a
这里对b的引用指向a,但是后续的赋值导致它指向一个新的地址,而a保持不变,因为改变的不是原来地址处的值。