java的int数组初始化_java – int数组初始化

首先要理解的是,局部变量存储在堆栈中,这些变量没有使用它们的默认值显式初始化。实例变量存储在堆中,默认情况下使用默认值进行初始化。

而且,在堆上也创建对象,无论实例引用变量是否保存其引用,还是本地引用变量。

现在,发生的是,当您将数组引用声明为局部变量时,并使用数组初始化:

int[] in = new int[5];

数组引用(in)存储在堆栈中,为数组分配一个内存,能够在堆上保存5个整数元素(记住,对象是在堆上创建的)。然后,在堆上分配用于存储整数值的5个连续的存储单元(size = 5)。并且数组对象上的每个索引依次保存对这些内存位置的引用。然后数组引用指向该数组。因此,由于5个整数值的内存在Heap上分配,所以它们被初始化为其默认值。

而且,当您声明数组引用时,也不要用任何数组对象初始化它:

int[] in;

数组引用是在Stack上创建的(因为它是一个局部变量),但是默认情况下它不会被初始化为数组,并且与实例变量一样也不会变为null。

所以,当您使用数组声明和初始化的第一种方法时,这是分配的方式:

"Your array reference"

"on stack"

| | "Array object on Heap"

+----+

| in |----------> ([0, 0, 0, 0, 0])

+----+

"Stack" "Heap"

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值