永发信息网

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

答案:6  悬赏:20  手机版
解决时间 2021-11-07 09:59
java中基本数据类型和引用数据类型在内存分配上有什么不同
最佳答案
Java的内存分配上,主要分4个块!
一块是用来装代码的,就是编译的东西。
一块是用来装静态变量的,例如用static关键字的变量,例如字符串常量。
一块是stack,也就是栈,是用来装变量和引用类型的!但区别在于,装了变量以后,变量上是有值的,而引用类型本身在stack上是没有值的。
一块是heap,也就是堆!堆可以一句话概括,装new出来的东西!

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

所以综上所述,基本数据类型都在stack中,而引用类型,变量是放在stack中,真正有内容的东西放在heap中,也就是当new了一个新的引用类型,他就会放在堆中,同时栈中的引用类型变量会指向堆中你new出来的东西,
这样说希望能帮你了解到java的内存分配问题。
基本数据类型都是存放在栈中。
引用数据类型一般存放在堆中,在栈中存放对其的引用,但有些优化也有可能一些对象放在栈上。
内存从大的方面可分为栈和堆。

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

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

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

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

若感觉难理解的话,给你说个生活例子吧:
栈内存的句柄就像是电视机的遥控器,而存到堆内存中的对象则是电视机,遥控器来操控电视机,就像通过句柄来操作对象的内容。所以在Java中随处可见,通过句柄来操作某对象的语法。
其实其中还有蛮多的内容需要我们慢慢体会的。。。
希望能帮到你。。。
这个问题复杂了,
基本数据类型都是存放在栈中。

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

你得找本关于java虚拟机的书才能看个大概。我感觉自己没有讲明白的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
女朋友问我,你有没有大男子主义。我杂回复她
拉杆箱是两个轮子好还是四个轮子好
乳胶床垫一般多少钱
这台N年前的老爷机,最近加了张显卡,一般能
舅奶奶和我的关系是什么?
请问这个问题如何解决,重装系统,磁盘突然少
问什么孙策是那么死要面子?
为什么我都16岁了,声音还是不成熟
仪陇县大寅邮政所地址有知道的么?有点事想过
某电冰箱制造企业因为工人违反操作规程,生产
联通飞信与移动飞信能互通吗?
迅游怎么样?
有借款的嘛要今晚到账的借1500跪求
诽谤佛教的人是什么罪过?
东平水库地址有知道的么?有点事想过去
推荐资讯
我这个脚指甲怎么回事 为什么里面半截凹进去
啊杜拉黑啦黑啦嘿是哪首歌的歌词
A昆明耀通机动车检测有限公司地址有知道的么
己巳丙寅辛酉时辰不祥 男 怎么样? 未来妻子
2002年10月8日出生是什么星座
为什么韩国无意从根本上改变“萨德”部署的决
aurora震旦ad2816数码复合机打印驱动为什么没
瑞丽市姐勒邮政所地址有知道的么?有点事想过
槽钢的型号尺寸是什么?
珠海长隆马戏团与横琴湾酒店相隔有多远?
是什么支撑了你坚持减肥下去?
1.甲企业2003年4月1日销售一批商品给乙企业,
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?