gpt4 book ai didi

java - 没有引用的对象

转载 作者:行者123 更新时间:2023-11-30 06:10:22 24 4
gpt4 key购买 nike

我一直在练习基于组件的设计模式,我想知道当你初始化一个没有引用的变量时,意味着初始化为 null,Java 继续并在内存中分配一个空间,该空间具有变量的大小,即使它已设置为 null,以便最终当您需要使用类的新实例重新初始化它时,它只是复制新实例的字段?

最佳答案

类型为引用类型的变量无论包含null 还是对象引用,都占用相同的空间量。

但是,变量只包含引用...而不是对象本身。

... when you need to reinitialize it with a new instance of a class it just copies the fields of the new instance?

呃……不。当您稍后“初始化”该变量时,您是在为该变量分配一个引用。您没有复制对象的字段。

例如:

  SomeType s = null;     // the declaration sets aside space for one
// reference, and the initialization assigns
// `null` to it.

s = new SomeType(...) // the 'new' expression creates the object and
// which allocates the space, etcetera
// the assignment merely assigns the reference
// for that object to 's'.

What if "s" is an array of "Sometype" instead still initialized to null, will it be legit to assume that only space for one reference will be saved until you create a new valid reference for an array of the relevant type?

数组类型也是引用类型。所以,是的,答案是一样的。声明 SomeType[] s 将为一个引用保留空间。

关于java - 没有引用的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35882189/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com