java中基本数据类型和引用数据类型在内存分配上有什么不同
答案:6 悬赏:20 手机版
解决时间 2021-11-07 09:59
- 提问者网友:轮囘Li巡影
- 2021-11-06 16:53
java中基本数据类型和引用数据类型在内存分配上有什么不同
最佳答案
- 五星知识达人网友:轻熟杀无赦
- 2021-11-06 17:18
Java的内存分配上,主要分4个块!
一块是用来装代码的,就是编译的东西。
一块是用来装静态变量的,例如用static关键字的变量,例如字符串常量。
一块是stack,也就是栈,是用来装变量和引用类型的!但区别在于,装了变量以后,变量上是有值的,而引用类型本身在stack上是没有值的。
一块是heap,也就是堆!堆可以一句话概括,装new出来的东西!
所以综上所述,基本数据类型都在stack中,而引用类型,变量是放在stack中,真正有内容的东西放在heap中,也就是当new了一个新的引用类型,他就会放在堆中,同时栈中的引用类型变量会指向堆中你new出来的东西!
这样说希望能帮你了解到java的内存分配问题。
一块是用来装代码的,就是编译的东西。
一块是用来装静态变量的,例如用static关键字的变量,例如字符串常量。
一块是stack,也就是栈,是用来装变量和引用类型的!但区别在于,装了变量以后,变量上是有值的,而引用类型本身在stack上是没有值的。
一块是heap,也就是堆!堆可以一句话概括,装new出来的东西!
所以综上所述,基本数据类型都在stack中,而引用类型,变量是放在stack中,真正有内容的东西放在heap中,也就是当new了一个新的引用类型,他就会放在堆中,同时栈中的引用类型变量会指向堆中你new出来的东西!
这样说希望能帮你了解到java的内存分配问题。
全部回答
- 1楼网友:低音帝王
- 2021-11-06 22:54
基本数据类型在栈中,引用类型在堆中,建议你看看java虚拟机方面的知识。
- 2楼网友:污到你湿
- 2021-11-06 22:22
Java的内存分配上,主要分4个块,
一块是用来装代码的,就是编译的东西。
一块是用来装静态变量的,例如用static关键字的变量,例如字符串常量。
一块是stack,也就是栈,是用来装变量和引用类型的,但区别在于,装了变量以后,变量上是有值的,而引用类型本身在stack上是没有值的。
一块是heap,也就是堆,堆可以一句话概括,装new出来的东西,
所以综上所述,基本数据类型都在stack中,而引用类型,变量是放在stack中,真正有内容的东西放在heap中,也就是当new了一个新的引用类型,他就会放在堆中,同时栈中的引用类型变量会指向堆中你new出来的东西,
这样说希望能帮你了解到java的内存分配问题。
一块是用来装代码的,就是编译的东西。
一块是用来装静态变量的,例如用static关键字的变量,例如字符串常量。
一块是stack,也就是栈,是用来装变量和引用类型的,但区别在于,装了变量以后,变量上是有值的,而引用类型本身在stack上是没有值的。
一块是heap,也就是堆,堆可以一句话概括,装new出来的东西,
所以综上所述,基本数据类型都在stack中,而引用类型,变量是放在stack中,真正有内容的东西放在heap中,也就是当new了一个新的引用类型,他就会放在堆中,同时栈中的引用类型变量会指向堆中你new出来的东西,
这样说希望能帮你了解到java的内存分配问题。
- 3楼网友:洒脱疯子
- 2021-11-06 20:49
基本数据类型都是存放在栈中。
引用数据类型一般存放在堆中,在栈中存放对其的引用,但有些优化也有可能一些对象放在栈上。
引用数据类型一般存放在堆中,在栈中存放对其的引用,但有些优化也有可能一些对象放在栈上。
- 4楼网友:鱼芗
- 2021-11-06 19:47
内存从大的方面可分为栈和堆。
java中的定义数据类型是告诉内存需要分配多少空间给某个变量使用。
java中的8种基本类型是在栈内存中开空间,其声明的基本类型变量的生命周期同变量规定的生命周期[离此定义的变量最近的大括号所对应的另一大括号之间的生命周期范围,过了范围则无效]。
java中的引用类型则分为两部分:
如Student nihility = new Student();
nihility-->为指向Student类型的句柄[这是我们特有的叫法],此句柄是定义在栈内存中,同基本类型
句柄存储的内容实质为内存地址[new 开空间返回的地址]
new -->真正的在内存中开空间[存此对象的属性值],是在堆内存中,返回内存地址,即句柄
若感觉难理解的话,给你说个生活例子吧:
栈内存的句柄就像是电视机的遥控器,而存到堆内存中的对象则是电视机,遥控器来操控电视机,就像通过句柄来操作对象的内容。所以在Java中随处可见,通过句柄来操作某对象的语法。
其实其中还有蛮多的内容需要我们慢慢体会的。。。
希望能帮到你。。。
java中的定义数据类型是告诉内存需要分配多少空间给某个变量使用。
java中的8种基本类型是在栈内存中开空间,其声明的基本类型变量的生命周期同变量规定的生命周期[离此定义的变量最近的大括号所对应的另一大括号之间的生命周期范围,过了范围则无效]。
java中的引用类型则分为两部分:
如Student nihility = new Student();
nihility-->为指向Student类型的句柄[这是我们特有的叫法],此句柄是定义在栈内存中,同基本类型
句柄存储的内容实质为内存地址[new 开空间返回的地址]
new -->真正的在内存中开空间[存此对象的属性值],是在堆内存中,返回内存地址,即句柄
若感觉难理解的话,给你说个生活例子吧:
栈内存的句柄就像是电视机的遥控器,而存到堆内存中的对象则是电视机,遥控器来操控电视机,就像通过句柄来操作对象的内容。所以在Java中随处可见,通过句柄来操作某对象的语法。
其实其中还有蛮多的内容需要我们慢慢体会的。。。
希望能帮到你。。。
- 5楼网友:第四晚心情
- 2021-11-06 18:46
这个问题复杂了,
基本数据类型都是存放在栈中。
引用数据类型基本上就是数据存放在堆中,在栈中存放一个一个引用,或者一个首地址。
你得找本关于java虚拟机的书才能看个大概。我感觉自己没有讲明白的。
基本数据类型都是存放在栈中。
引用数据类型基本上就是数据存放在堆中,在栈中存放一个一个引用,或者一个首地址。
你得找本关于java虚拟机的书才能看个大概。我感觉自己没有讲明白的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯