1.数组
1.1 如何定义数组
动态声明数组
- 先声明,后赋值 :
数据类型[] 数组名;
数组名 = new 数据类型[容量];
//这里使用int类型作为演示
int[] arr;
arr = new int[10];
- 声明的同时并赋值:
数据类型[] 数组名 = new 数据类型[容量];
//这里使用int类型作为演示
int[] arr = new int[10];
静态声明数组
- 数据类型[] 数组名 = {value 1,value 2,value 3,…value k};
//这里使用int类型作为演示
int[] arrs = {1,2,3,4,5,6,7,...};
1.2 有关于数组的使用注意事项
- 声明的数组的数据类型一旦确定,之后无法修改。
- 数组的数据类型确定之后,该数组只能保存该数据类型所对应的值。
- 数组名是一个引用数据类型,存放着对地址的引用。
- new关键字的作用是申请堆区内存空间,并且清空整个内存空间中所有的二进制位,即声明一个int类型的数组,若没有为其中的每一个元素赋值,那么没赋值的元素为该数据类型的默认值-零值,例如int类型的默认值为数字0,String类型的默认值为null,char类型的默认值为’\0’。
- 数组的容量大小一旦确定,针对当前数组,后期无法修改其容量。
- 数组的下标从0开始,到arr.length - 1结束,超出范围皆为无效下标。
1.3 数组内存分析图(使用int数据类型数组演示)
- int[] arr = new int[10];
int[] arr = new int[10];
//下面是对本条代码的内存分析图
2. arr[0] = 10; arr[5] = 20;
arr[0] = 10;
arr[5] = 20;
//下面是内存分析图
1.4 数组内存转移分析图(使用int数据类型数组演示)
- int[] arr1 = new int[10];
int[] arr2 = new int[10];
int[] arr1 = new int[10];
int[] arr2 = new int[10];
- arr1[5] = 100;
arr2[5] = 500;
arr1[5] = 100;
arr2[5] = 500;
3. arr1 = arr2;
//将arr2的引用赋值给arr1
arr1 = arr2;
4. arr1[5] = 2000;
arr1[5] = 2000;
1.5 数组的补充知识点
- 获取数组的容量:使用数组名.length
length是数组的一个属性,存放着当前数组的具体长度,在堆区申请的一组连续的空间中,不只包含了保存数据的对应大小的内存空间,例如:int[] arr = new int[10]; 虽然只申请了10个存储int类型的内存空间,按照计算来讲该空间的大小应该是10*4=40个字节的大小,但是实际上不是如此,数组的length属性也是保存在堆区所申请的内存空间当中,而且具有一点的大小,所以实际上在堆区当中数组的占用空间实际上会比存储数据所计算的空间略大一些。