Java语言基础-数组的动态初始化和内存分析

Java数组的动态初始化操作:
由我们来设置数组的元素个数(数组长度),而每一个数组元素的初始值由系统决定。
语法:
数组元素类型[] 数组名 = new 数组元素类型[length];

int[] ages = new int[100];
不同数据类型的初始值
byte,short,int  初始值0
long            初始值oL
float           初始值0.0F
double          初始值0.0D
boolean         初始值false
char            初始值'\u0000' 表示空
引用数据类型      初始值null
内存分析
int[] nums = new int[3];
System.out.println(nums.length); // 3
  1. int[] nums 声明一个变量,此时ages=null
    这里写图片描述
  2. new int[3] 开辟内存空间,因为是intl类型,系统默认初始值是0
  3. 赋值操作。这一步后nums 变量就引用了0x1234 这个内存地址。以后我们操作nums,其实就是操作的nums引用的内存空间
    这里写图片描述

继续分析这句:

nums = new int[5];

1.开辟内存空间,分配初始值
2.赋值。此刻nums就引用0x3456,这一步和数组的静态初始化是一样的。
这里写图片描述

如何我们把

int[] nums = new int[3];
nums = null; // 此时nums没有引用任何内存空间
System.out.println(nums.length);

程序会报错如下:

java.lang.NullPointerException
什么时候使用静态初始化,什么时候使用动态初始化?

当我们事先知道,需要存储哪些数据的时候,选用静态初始化;
当我们事先不知道,需要存储哪些数据的时候,只能使用动态初始化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值