从零辅助篇2:数组的动态初始化和静态初始化的区别

1、数组的动态初始化

int buffer[] = new int[5] //动态初始化

我们知道,java里面凡是通过new关键字开辟的空间都是在堆区,下面我们简单的画一下它的内存分布
在这里插入图片描述
首先,当程序执行到数组的定义部分时,buffer会入栈,然后通过new关键字在堆区开辟5个连续的空间,buffer则会指向堆区中数组的地址,在c语言中,这种称之为引用传递。

2、数组的静态初始化

int buffer[] = {1,2,3,4,5};

与动态初始化类似,同样是栈中的变量指向了堆区中数组的地址

3、二者的区别

  • 相同点:

    1. 一旦初始化就不能再改变长度,如果一定要改变,只能重新初始化
    2. 内存的分布相同,虽然静态没有使用new关键字,但实则它也是在堆区开辟内存的
    3. 在声明了数组变量但没有初始化的时候,它们都不能在初始化的时候进行赋值
  • 不同点:

    1. 静态初始化在初始化时由程序员显示指定每个数组元素的初始值,由系统决定数组的长度。
    2. 动态初始化:就是在初始化的时候指定数组长度(这时已经分配内存)。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值