5.1 数组的定义
什么是数组:
- 数组主要解决多变量多数据的存储问题,方便程序后期统一维护操作数据
- 数组的本质是什么呢?数组就是一系列空间大小相等且地址连续的一片存储空间
- 为什么空间大小是相等的呢?就是为了方便统一维护我们的数据,必须得保证数据之间的类型是一样的。(多个同类型的变量空间连在一起组成的结构叫数组)
- 为什么变量空间的地址是连续的呢?就是为了方便统一操作我们的数据。
总结:
1.数组就是一片地址连续且空间大小一致的存储空间(但是每个空间存的还是其他数据的地址)
2.数组存在于堆内存中,但凡在堆中存储的数据都称之为 对象
但凡在堆内存中创建的对象都会有默认初始值
- 整数类型默认0
- 浮点类型默认0.0
- 布尔类型默认false
- 引用数据类型(对象)默认null
3.数组提供角标来访问数组当中的元素
4.数组变量存的就是数组在堆内存中首元素的地址
5.数组通过角标来访问元素的具体计算方式是 所要访问数据的地址=首元素地址+角标*数据类型大小
6.数组一旦定义下来,其长度不可改变;数组中有几个地址?就看数组有几个元素空间<==>数组的长度
7.创建数组时必须明确规定大小或内容
创建数组的格式:
数据类型[] 数组名=new 数据类型[长度]; 创建数组只指定长度但不指定内容
数据类型[] 数组名=new 数据类型[]{1,2,3,4,5}; 创建数组指定内容(指定长度)
数据类型[] 数组名={1,2,3,4,5}; 创建数组指定内容(指定长度)
5.2 数组的内存分析
5.3 数组常见错误
ArrayIndexOutOfBoundsException 数组角标越界
NullPointerException 空指针异常
class Test04{
public static void main(String[] args){
//需求1:创建长度为5的int型数组(一维) 矩阵(二维)
int[] arr=new int[5];
//需求2:访问arr数组中第4个元素
System.out.println(arr[3]);//1000+3*4
System.out.println(arr[0]);
System.out.println(arr[2]);
//创建长度为5的String型数组
String[] strArr=new String[5];
System.out.println(strArr[0]);
//System.out.println(arr[10]);
//ArrayIndexOutOfBoundsException 角标越界
int[] arr2=arr;
//此时此刻 数组还是那个数组对象
//只不多有两个变量引用到了而已
arr2[0]=10;