Java中的数组内存速通

数组的定义与存储

数组是存储相同类型的集合,在内存上是一块连续的空间,并且数组在内存上是存放在上面的.

//数组的创建与初始化
//创建一个3个int类型的数组
int[] array1 = new int[];
//初始化这个数组为1,2,3
array1 = {1,2,3};

数组在内存当中的使用

小tips:

  1. 内存的作用:每一块内存都有各自的作用, 内存是专门用来存储程序运行时的数据

  2. Java当中一共分为两种数据类型(基本数据类型和引用数据类型)

  3. 数组就是一种非常常见的引用数据类型

  4. 引用数据类型创建的变量称为对象的引用,这个变量保存的是对象所在的空间地址

public static void main(String[] args){
    //创建一个数组,会在堆上开辟出一块连续的空间
    int[] a1 = new int[3];       //1
    
    int[] a2 = {1,2,3,4};        //2
    //以下为内存中的解释
    
}

如图所示,在内存当中,当我们进入main方法之后,会在栈中开开辟出一块空间,当进行:

int[] a1 = new int[3];

这一行代码时,会先在堆内存当中开辟出一个存储了三个int类型的连续空间,(没有赋值时统一初始化为0),

同时在main方法中开一小块空间去保存(指向)这个连续空间的地址(0x13),

并且把这一小块地址命名为a1,所以a1是对象的引用,保存的是对象的地址.(a2同样如此)

最后当main方法执行完毕之后,由于a1,a2是局部变量,生命周期随着方法执行完毕之后被销毁,

而在堆中的对象没有变量引用了,就会被自动回收掉,以免占用太多内存.

两个引用指向了同一个对象

public static void main(String[] args){
   int[] a1 = {1,2,3,4};
    
    //两个引用指向了同一个对象,即指向了同一个内存空间
    int b1 = a1;
    
    //通过第二个引用修改了对象的原来的值
    b1[0] = 13;
    
}

此时a1和b1两个引用都同时指向了同一块内存空间,就可以通过b1这个引用去修改对象中的值了,

 //通过第二个引用修改了对象的原来的值
    b1[0] = 13;
​
//修改之后a1[0]的值也是13了

null是什么

int a = null;
​
//会发生空指针异常
int length = a.length;

小tips:

  1. null 不能和0画等号

  2. a这个引用不指向任何对象,

  3. a不能做读写操作,否则会发生空指针异常

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值