gpt4 book ai didi

Java 包装器和原始内存分配

转载 作者:搜寻专家 更新时间:2023-11-01 01:41:16 24 4
gpt4 key购买 nike

我在面试中被问到以下问题

Consider this following Code

int i =0
Integer e1 = 0
In which memory are they going to be created?

据我了解

For int i =0

Primitive data type goes into stack memory and

对于整数 e1 = 0

Integer been a Wrapper Class goes into heap memory

请帮助正确理解?

最佳答案

比那要复杂一些。

首先,你需要知道iei变量是局部变量还是对象的字段(静态或实例)1 .

如果是局部变量:

  • i 在堆栈上。
  • ei 在栈上(一个引用),它指的是堆中的一个对象。

如果它们是实例或类的字段:

  • i 在堆上(作为实例或类的一部分)。
  • ei 在堆上(作为实例或类的一部分),它引用堆中的一个对象。

最后,值得注意的是 Integer e1 = 0 可能根本不会分配新的 Integer 对象。 e1 中存储的引用可能是对已存在对象的引用。


1 - 还有另一种情况。如果 iei 是内部类声明所引用的局部变量,则在实例化内部类时将进行第二次复制。对于该副本,空间使用将如同 i/ei 是内部类的字段。

关于Java 包装器和原始内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36660904/

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