分配给引用类型的引用类型

雅库布·高斯

我想问一下我这个例子是否正确,所以如果你将引用类型分配给引用类型,例如:

ClassName p1 = new ClassName();
ClassName p2 = p1;

因此,如果我要谈论第一行,当您创建引用变量(类)时,会同时发生两件事。首先,在 HEAP 上(在内存中的某个地址上)创建引用类型(类)的对象,然后在 HEAP 上创建对这个创建对象的引用(创建对象位置的地址),在堆栈上创建并存储在多变的。

对于第二行,我知道,从 p1 引用将被复制到 p2,因此 p2 和 p1 将具有指向内存(堆)中相同对象的相同引用。但我真的很想知道这背后发生了什么。我也知道,存储在引用变量中的引用是在堆栈上分配的。

因此,如果我说将引用类型分配给引用类型背后真正发生了什么。会不会是:因为引用(内存中对象的“地址”)实际上就像“值类型”(我不是指堆上的对象),所以将引用类型分配给引用类型,我可以理解为分配引用(地址)按值?

谢谢您的回答。

菲利普·H

虽然有很多不同;引用在概念上类似于内存地址;变量只存储地址,因此将地址分配给另一个变量只是允许它访问相同的内存实例。

引用类型内存存储在堆上,而不是堆栈上,但地址“指针”(变量)存储在堆栈上。当它们超出所有堆栈范围和线程存储范围时,堆内存被释放。

托管内存系统与 C 中的地址/指针概念之间存在许多微妙之处和差异 - 但在您的问题范围内,您似乎有正确的理解。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么不能将方法引用直接分配给Object类型的变量?

来自分类Dev

如何有条件地将类型分配给引用

来自分类Dev

直接在C ++中将值分配给引用返回类型

来自分类Dev

当listIterator用作引用类型时,分配给它的对象必须实现它吗?

来自分类Dev

类型'{}'不能分配给类型'()=>

来自分类Dev

C#将指向引用类型的变量分配给另一个变量,后者中存储了什么?

来自分类Dev

分配给另一个的ArrayList类型变量在Android Java中作为引用传递

来自分类Dev

为什么我们不能将 lambda 表达式直接分配给 Object 类型的引用变量?

来自分类Dev

引用分配给更复杂的变量

来自分类Dev

将对象分配给数组引用

来自分类Dev

分配给返回引用的函数

来自分类Dev

从值/引用映射分配给引用映射

来自分类Dev

将类型分配给Maybe类型的嵌套类型的属性

来自分类Dev

VHDL分配给数组类型

来自分类Dev

将单位类型分配给变量

来自分类Dev

将Integer类型分配给int

来自分类Dev

将任何类型分配给变量

来自分类Dev

分配为空引用类型

来自分类Dev

ionic 2“类型'{}'无法分配给类型'any []”

来自分类Dev

无法将类型“ MyClass”的值分配给类型“ MFMailComposeViewControllerDelegate!”!

来自分类Dev

参数类型“ CheckIn”不能分配给参数类型“()-> CheckIn”

来自分类Dev

TypeScript错误:“ void”类型无法分配给“ boolean”类型

来自分类Dev

参数类型“ A”不能分配给类型“ B”吗?

来自分类Dev

参数类型不能分配给参数类型,应为

来自分类Dev

无法将类型“ [PHAsset]”的值分配给类型“ UIImageView!”

来自分类Dev

无法将类型“ AppDelegate”的值分配给类型“ CLLocationManagerDelegate?”

来自分类Dev

类型'this'的参数不能分配给'工具'类型的参数

来自分类Dev

类型'“”'的参数不能分配给类型'“ prototype”'茉莉的参数

来自分类Dev

类型'undefined'不能分配给'never'类型

Related 相关文章

  1. 1

    为什么不能将方法引用直接分配给Object类型的变量?

  2. 2

    如何有条件地将类型分配给引用

  3. 3

    直接在C ++中将值分配给引用返回类型

  4. 4

    当listIterator用作引用类型时,分配给它的对象必须实现它吗?

  5. 5

    类型'{}'不能分配给类型'()=>

  6. 6

    C#将指向引用类型的变量分配给另一个变量,后者中存储了什么?

  7. 7

    分配给另一个的ArrayList类型变量在Android Java中作为引用传递

  8. 8

    为什么我们不能将 lambda 表达式直接分配给 Object 类型的引用变量?

  9. 9

    引用分配给更复杂的变量

  10. 10

    将对象分配给数组引用

  11. 11

    分配给返回引用的函数

  12. 12

    从值/引用映射分配给引用映射

  13. 13

    将类型分配给Maybe类型的嵌套类型的属性

  14. 14

    VHDL分配给数组类型

  15. 15

    将单位类型分配给变量

  16. 16

    将Integer类型分配给int

  17. 17

    将任何类型分配给变量

  18. 18

    分配为空引用类型

  19. 19

    ionic 2“类型'{}'无法分配给类型'any []”

  20. 20

    无法将类型“ MyClass”的值分配给类型“ MFMailComposeViewControllerDelegate!”!

  21. 21

    参数类型“ CheckIn”不能分配给参数类型“()-> CheckIn”

  22. 22

    TypeScript错误:“ void”类型无法分配给“ boolean”类型

  23. 23

    参数类型“ A”不能分配给类型“ B”吗?

  24. 24

    参数类型不能分配给参数类型,应为

  25. 25

    无法将类型“ [PHAsset]”的值分配给类型“ UIImageView!”

  26. 26

    无法将类型“ AppDelegate”的值分配给类型“ CLLocationManagerDelegate?”

  27. 27

    类型'this'的参数不能分配给'工具'类型的参数

  28. 28

    类型'“”'的参数不能分配给类型'“ prototype”'茉莉的参数

  29. 29

    类型'undefined'不能分配给'never'类型

热门标签

归档