博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
看透内存中的数组
阅读量:4292 次
发布时间:2019-05-27

本文共 775 字,大约阅读时间需要 2 分钟。

一 数组在內存中的存储方式

看待一个数组时,一定要把数组看成两个部分:一部分是数组引用,也就是在代码中定义的数组引用变量,它存储在内存的栈部分,另一部分是实际的数组对象,这部分存储在內存的堆部分,通常无法直接访问它,只能通过数组引用变量来访问,下图清晰的描述了数组在内存中的存储示意图。

看透内存中的数组

二数组应用举例

1代码示例

public class ArrayInRam{public static void main(String[] args){
// 定义并初始化数组,使用静态初始化
int a = {5, 7 , 20};
// 定义并初始化数组,使用动态初始化
int b = new int[4];
// 输出b数组的长度
System.out.println("b数组的长度为:" + b.length);
// 循环输出a数组的元素
for (int i = 0 ,len = a.length; i < len ; i++ )
{
System.out.println(a[i]);
}
// 循环输出b数组的元素
for (int i = 0 , len = b.length; i < len ; i++ )
{
System.out.println(b[i]);
}
// 因为a是int类型,b也是int类型,所以可以将a的值赋给b。
// 也就是让b引用指向a引用指向的数组
b = a;
// 再次输出b数组的长度
System.out.println("b数组的长度为:" + b.length);
}
}

2 运行结果

5

7

20

0

b数组的长度为:3

3结果分析

看透内存中的数组

看透内存中的数组

图一是b=a前,数组在內存中的表示。

图二是b=a后,数组在內存中的表示。

针对原来的b数组,因为它失去了引用数组,会变成垃圾,等待垃圾回收杌制回收它。

转载地址:http://qdggi.baihongyu.com/

你可能感兴趣的文章
Linux的i2c驱动详解
查看>>
设备模型之kobject,kset及其关系
查看>>
Linux内核源码分析--内核启动之(5)Image内核启动(rest_init函数)(Linux-3.0 ARMv7)
查看>>
Linux环境进程间通信(一):管道及有名管道
查看>>
多线程编程
查看>>
Linux网络编程:原始套接字的魔力【上】
查看>>
进程间通信---共享内存
查看>>
进程间通信--信号(进程间通信唯一的异步方式)
查看>>
linux 标准IO缓冲机制探究
查看>>
【转】linux网络编程——套接字(socket)入门
查看>>
【原创】samba移植到android流程
查看>>
【原创】boa服务移植到安卓手机
查看>>
msgrcv error : Identifier removed(ERMID)错误解决;
查看>>
Linux进程间通信——消息队列:
查看>>
linux内核——进程管理
查看>>
(原创)socket学习实验(一)——利用C 语言socket抓取一个网页内容
查看>>
Linux 同步方法剖析--内核原子,自旋锁和互斥锁
查看>>
adb shell中设置android系统内部环境变量!
查看>>
Android ADB中使用find命令
查看>>
(原创)android6.0系统Healthd深入分析
查看>>