首先什么是数组?
数组是一个存储多个变量(元素)的容器;
有什么特点?
1.长度一旦被定义,不可以改变;
2.增删慢,查找快(通过索引查找的)
3.数组既可以存储基本数据类型也可以存储引用数据类型
4.数组元素都有整数索引
5.同一数组下存储的变量数据类型要一致。
数组的定义(声明)格式
格式1:数据类型[] 数组名; 例如:int [ ] a; 个人常用
格式2:数据类型 数组名[]; 列如:int a [ ];
注意:这两种定义做完了,数组中是没有元素值的。
数组的初始化:
首先注意:java中的数组必须初始化才能使用。
所谓初始化就是为数组中的元素开辟内存空间,并为每个数组的元素赋值。
数组的两种初始化方式:
动态初始化:初始化的时候只指定了数组的长度,由系统来给定初始值。
格式如下: 数据类型[] 数组名=new 数据类型[数组的长度]
数组长度其实就是数组中元素的个数。
举例:int [] arr=new int[5]
左边:
- int:说明数组中的元素的数据类型是int类型
- []:说明这是一个数组
- arr:是数组的名称
- 右边:
- new:为数组分配内存空间
- int:说明数组中的元素的数据类型是int类型
- []:说明这是一个数组
- 5:数组的长度,其实就是数组中的元素个数
静态初始化:初始化指定每个元素的初始化值,由系统来给定数组的长度。
格式如下:数据类型[ ] 数组名=new 数据类型{ 元素1,元素2,元素3.....}
简化格式:数据类型[ ] 数组名={ 元素1,元素2.元素3......}
举例:int[] arr={1,2,3......}
Java 程序在运行时,需要在内存中的分配空间。为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。简单阐述一下jvm内存中常说的栈、堆的含义。
栈 存储局部变量
堆 存储new出来的东西
数组的使用——数组是通过数组元素的下标来访问的。
如果直接输出数组名,我们得到的是一个数组在内存中的地址值。
而我们获取的数组地址值是没有实际意义的,我们需要的是数组中的元素值。其实java数组中的每个元素都有编号的,从0开始,最大的是数组的长度。
通过用数组名和编号的配合我们就可以查找到指定的元素,我们通常把编号的专业术语叫做索引.
数组使用过程中的两个小问题
- A:java.lang.ArrayIndexOutOfBoundsException
- 数组越界异常
- 产生的原因:就是你访问了不存在的索引元素。
- B:java.lang.NullPointerException
- 空指针异常
- 产生的原因:数组已经不指向堆内存的数据了,你还使用数组名去访问元素。