java中基本数据类型和引用数据类型在内存分配上有什么不同 5

 我来答
疲惫的龟
推荐于2018-06-08 · TA获得超过2209个赞
知道小有建树答主
回答量:638
采纳率:100%
帮助的人:329万
展开全部
Java的内存分配上,主要分4个块!
一块是用来装代码的,就是编译的东西。
一块是用来装静态变量的,例如用static关键字的变量,例如字符串常量。
一块是stack,也就是栈,是用来装变量和引用类型的!但区别在于,装了变量以后,变量上是有值的,而引用类型本身在stack上是没有值的。
一块是heap,也就是堆!堆可以一句话概括,装new出来的东西!

所以综上所述,基本数据类型都在stack中,而引用类型,变量是放在stack中,真正有内容的东西放在heap中,也就是当new了一个新的引用类型,他就会放在堆中,同时栈中的引用类型变量会指向堆中你new出来的东西!
这样说希望能帮你了解到java的内存分配问题。
匿名用户
2015-06-26
展开全部
Java的内存分配上,主要分4个块,
一块是用来装代码的,就是编译的东西。
一块是用来装静态变量的,例如用static关键字的变量,例如字符串常量。
一块是stack,也就是栈,是用来装变量和引用类型的,但区别在于,装了变量以后,变量上是有值的,而引用类型本身在stack上是没有值的。
一块是heap,也就是堆,堆可以一句话概括,装new出来的东西,

所以综上所述,基本数据类型都在stack中,而引用类型,变量是放在stack中,真正有内容的东西放在heap中,也就是当new了一个新的引用类型,他就会放在堆中,同时栈中的引用类型变量会指向堆中你new出来的东西,
这样说希望能帮你了解到java的内存分配问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
洛沙虎雪1S
2012-12-11 · 超过18用户采纳过TA的回答
知道答主
回答量:37
采纳率:0%
帮助的人:42万
展开全部
内存从大的方面可分为栈和堆。

java中的定义数据类型是告诉内存需要分配多少空间给某个变量使用。

java中的8种基本类型是在栈内存中开空间,其声明的基本类型变量的生命周期同变量规定的生命周期[离此定义的变量最近的大括号所对应的另一大括号之间的生命周期范围,过了范围则无效]。

java中的引用类型则分为两部分:
如Student nihility = new Student();
nihility-->为指向Student类型的句柄[这是我们特有的叫法],此句柄是定义在栈内存中,同基本类型
句柄存储的内容实质为内存地址[new 开空间返回的地址]

new -->真正的在内存中开空间[存此对象的属性值],是在堆内存中,返回内存地址,即句柄

若感觉难理解的话,给你说个生活例子吧:
栈内存的句柄就像是电视机的遥控器,而存到堆内存中的对象则是电视机,遥控器来操控电视机,就像通过句柄来操作对象的内容。所以在Java中随处可见,通过句柄来操作某对象的语法。
其实其中还有蛮多的内容需要我们慢慢体会的。。。
希望能帮到你。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
乌微月2S
2012-12-11 · TA获得超过5037个赞
知道大有可为答主
回答量:5361
采纳率:42%
帮助的人:2880万
展开全部
这个问题复杂了,
基本数据类型都是存放在栈中。

引用数据类型基本上就是数据存放在堆中,在栈中存放一个一个引用,或者一个首地址。

你得找本关于java虚拟机的书才能看个大概。我感觉自己没有讲明白的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
梦想研发站4G
2012-12-11 · TA获得超过461个赞
知道小有建树答主
回答量:203
采纳率:0%
帮助的人:121万
展开全部
基本数据类型都是存放在栈中。
引用数据类型一般存放在堆中,在栈中存放对其的引用,但有些优化也有可能一些对象放在栈上。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式