首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我们可以向Java添加结构吗?

我们可以向Java添加结构吗?
EN

Stack Overflow用户
提问于 2013-09-21 02:17:14
回答 4查看 926关注 0票数 3

我在一次面试中被问到了这个问题,但我无法回答。希望你能帮助我。

问题是:为什么Java开发者不添加对结构的支持?为什么不能将堆栈上分配的值类型添加到Java中?

我想以前的java版本应该有一些向后兼容性的问题吧?然而,我无法提出任何建议。

EN

回答 4

Stack Overflow用户

发布于 2013-09-21 02:48:06

虽然Java不允许堆栈分配,但它确实使用了一种称为Escape Analysis的东西。

找到了一个与此相关的链接:http://www.ibm.com/developerworks/java/library/j-jtp09275/index.html

Java语言没有提供任何在堆栈上显式分配对象的方法,但这一事实并不能阻止JVM在适当的地方仍然使用堆栈分配。JVM可以使用一种称为逸出分析的技术,通过该技术,它们可以判断出某些对象在其整个生命周期中都被限制在单个线程中,并且该生命周期受给定堆栈帧的生命周期的限制。这样的对象可以安全地分配在堆栈上,而不是堆上。更好的是,对于小对象,JVM可以完全优化分配,只需将对象的字段提升到寄存器中即可。

票数 3
EN

Stack Overflow用户

发布于 2013-09-21 02:23:36

我认为带有公共变量的class非常接近于struct

代码语言:javascript
运行
复制
final class Person {
   String name;
   int age;
}

因此,如果类已经涵盖了这种类型的功能,则不需要添加像structs这样的功能。

票数 2
EN

Stack Overflow用户

发布于 2013-09-21 02:30:36

如果问题的实质是“为什么不能将堆栈上分配的值类型添加到Java中”,那么答案应该是Java中的数据位于堆中,并在堆栈中通过引用传递(泛型类型除外)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18923300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档