Stack或Heap上的Java Primitive数据类型?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Stack或Heap上的Java Primitive数据类型?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1139字,纯文字阅读大概需要2分钟。
内容图文
![Stack或Heap上的Java Primitive数据类型?](/upload/InfoBanner/zyjiaocheng/702/842ea65875284d6cb2aa45ec989b6c86.jpg)
如果我是正确的本地定义的原始数据类型将在堆栈上.但是,如果原始数据类型被定义为on对象实例的一部分,则该原语将在堆上进行.
class Test
{
int y=10; // defined as part of the class
public void function1(){
int x = 5; // defined locally
}
public static void main(String[] args)
{
Test obj = new Test();
}
}
那么在上面的代码中,x将被存储在堆栈中并且y存储在堆上吗?我很困惑它们是如何存储的,为什么它与堆栈或堆有关?
解决方法:
调用方法时,会将某些数据放在堆栈中.方法完成后,将从堆栈中删除数据.在程序执行的其他点,数据被添加到堆栈中,或从中删除.
因此,如果您有一个变量,该变量旨在比创建它的方法的执行寿命更长,那么它需要在堆上.这适用于您创建的任何对象以及存储在这些对象中的任何基元.
但是,如果变量在创建后不久就要超出范围 – 例如,在创建它的方法的末尾,甚至更早,那么在堆栈上创建该变量是合适的.局部变量和方法参数符合这个标准;如果它们是基元,则实际值将在堆栈上,如果它们是对象,则对象(但不是对象本身)的引用将在堆栈上.
在您的具体示例中,只要function1完成运行,x就无法使用.因此在堆栈上创建它是合理的.在function1的末尾,数据被有效地从堆栈中移除,包括x.另一方面,只要包含对象存在,变量y预计仍然存在;如果它是在堆栈上创建的,一旦创建它的对象构造函数完成运行,它就会停止存在.因此必须在堆上创建y.
内容总结
以上是互联网集市为您收集整理的Stack或Heap上的Java Primitive数据类型?全部内容,希望文章能够帮你解决Stack或Heap上的Java Primitive数据类型?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。