数组
1.存储相同数据类型的一组连续的数据
2.数组的特点
a.数组本身也是一个变量,既然是变量(局部变量),那么在栈区开辟空间,先声明再赋值再使用
b.数组的数据类型可以是八大基本数据类型和引用类型,数组本身是引用类型
c.创建数组我们需要使用到new,那么new出来的在堆区开辟,所以数组会同时在栈区和堆区开辟空间
d.如果一个数组没有指向堆区某块内存地址,这个时候数组变量为null,如果使用这个变量会出现空指针异常
e.如果一个数组访问了不存在的索引,会出现数组越界
3.格式
a.int[] arr = new int[5];
b.int arr[] = new int[5];
注意:int arr[] = new int[];是错误的
4.数组的初始化
a.静态初始化: 在定义数组的时候先给出元素,然后系统会根据元素的个数计算长度,这种初始化不会指定数组的长度
int[] arr = {11,22,33,44,55};
int[] arr = new int[]{11,22,33,44,55};
b.动态初始化: 在定义数组的时候默认值为堆区变量的默认值,需要给出数组的长度
int[] arr = new int[5]; 默认值是0
5.数组的内存分配
内存分为:
a.栈区: 先进后出,类似于子弹夹,一般用来给局部变量开辟空间
b.堆区: 用于存储new出来的对象
堆区创建出来的对象都会有地址值,而数组变量就是用来存放这个地址的
凡事new出来的对象都有默认值
byte short int long 0