当前位置:首页 > 内存 > 正文

同一个类的对象共用一段内存

  • 内存
  • 2024-06-10 04:26:12
  • 6604

一、java中如果一个类被多次实例化且用的都是相同的对象名,那么这些对象所在的对象内存空间地址都一样吗不同的是,每个类实例化都会生成一个对象并将其放置在内存中。对象名称仅指其中之一。当然,当jvm认为你不能再访问你创建的对象时,它可以回收这些无用的对象。
二、定义一个共用体变量时,系统分配给他的内存单元是?

当我们定义联合变量时,系统分配给它的内存单位是:占用内存最大的成员所请求的容量。

使用联合变量的目的是通过统一的内存段来存储几种不同类型的数据,但需要注意的是,任何时候只能存储一种类型,而不是集中存储;另外,如果添加了新的成员变量,原来的成员变量的值将会被覆盖。

扩展信息:

同一个内存段可以用来存储几种不同类型的成员,但任何时候都只有一个备份其中,而不是同时几个。也就是说,任何时候只有一个成员在工作,其他成员都不工作,所以他们不存在并且同时工作。

联合变量中的有效成员是新成员存储后存储的最后一个成员,原来的成员失去作用。联合变量的地址和其成员的地址是相同的地址。


三、Java中请问将一个对象赋值给另一个同类对象,这两个对象是否指向同一堆内存?

对象是引用类型,因此将对象分配给另一个变量实际上只是分配一个内存地址。

换句话说,如果所有对象都具有相同的地址,则更改该地址的值也会更改具有相同地址的其他对象。
示例:
Lista=newArrayList();("a");Listb=a;("b");n(a);//输出:[a,b]
这里,a和b是同一个地址。
但是,如果有分配,则不适用。
Stringa="a";
Stringb=a;
b="b";
n(a);//输出:a
这里对b的引用指向a,但是后续的赋值导致它指向一个新的地址,而a保持不变,因为改变的不是原来地址处的值。