初学者对java数组中栈和堆的认识
来源:互联网 发布:台湾中华电信网络制式 编辑:程序博客网 时间:2024/06/05 19:26
public static void main(String[] args) { String[] Array = null; Array = new String[3]; Array[0] = "安徽合肥"; Array[1] = "江苏苏州"; Array[2] = "安徽铜陵"; for(int i=0;i<=2;i++){ System.out.println(Array[i]); } }
以上代码是对数组简单的声明及内存分配的小实例,简单的实现了数组的应用。接下来想和大家分享的是数组在内存中的存放形式,以及在数组中栈和堆的关系。首先给出结论:数组引用变量(即Array变量)是存放在栈内存中,数组元素(即Array[0]、Array[1]等元素)是存放在堆内存中,通过栈内存中的指针指向对应元素的在堆内存中的位置来实现访问,以下图来说明数组此时的存放形式。
在java中,当执行方法时,该方法都会建立自身的内存栈,以用来将该方法内部定义的变量逐个加入到内存栈中,当执行结束时方法的内存栈也随之销毁,所有变量存放在栈内存中,即随着寄存主体的消亡而消亡;反之,当我们创建一个对象时,这个对象被保存到运行时数据区中,即存放在堆空间中,以便反复利用(因为创建成本很高),此时不会随着执行方法的结束而消亡,同时该对象还可被其他对象所引用,只有当这个对象没有被任何引用变量引用时,才会在垃圾回收在合适的时间点回收。
阅读全文
1 0
- 初学者对java数组中栈和堆的认识
- 初学者对堆和栈的认识
- 初学者对Android的认识和理解
- 初学者对自动装箱和自动拆箱的认识(IntegerCache的缓存数组)
- 对栈,堆,静态区的认识和总结!
- Java中对栈和堆的理解
- JAVA中数组的内存(栈和堆)
- 堆和栈的认识
- 初学者对static的认识
- 对栈,堆,静态区的认识
- 有关初学者对JAVA中的String的认识(1)
- 对C++中对象数组的认识
- 对Java数组的了解及认识
- 对Java中接口和抽象类的一些认识
- 对 Java 中 synchronized(this) 的一些理解和认识
- Java中对<对象> 和 <封装>的认识
- 认识java中的堆和栈
- 认识java中的堆和栈
- 用户DSN、系统DSN、文件DSN的区别
- C++实验6:项目3—矩阵求和
- Mysql 常见时间函数整理
- spark的三种模式的详细运行过程
- 刷微信步数,运动排名
- 初学者对java数组中栈和堆的认识
- RxBus 基于 RxJava1.x 实现消息传递机制
- Spark性能优化指南——基础篇
- android中布局和View创建的源码分析---setContentView
- Maven学习总结(15)——深入理解Maven相关配置
- 使用HDC画音频波形图
- 测试一篇博客
- emoji正则表达式
- hdu1426数独游戏Sudoku Killer DFS