数组
- 数组是相同类型数据的有序集合。
- 数组描述的是相同类型的多个数据,按照一定的先后次序排列组合而成。
- 每个数据为一个数组元素,每个数组元素可以通过一个下标来访问。
数组声明和创建
- 首先必须声明数组变量,才能在程序中使用数组。语法
dataType[] array; //首选的方法
dataType array[]; //效果一样,但不是首选
- Java语言用new操作符来创建数组。语法
dataType[] array = new dataType[size];//size是自己定义的数组长度
- 数组元素通过索引访问,索引从0开始。
array[0];//就是数组的第一个元素
- 获取数组长度:
array.length;//数组长度
- 创建
public static Test{
public static void mian(String[] args){
int []arrays; //声明数组
arrays = new int[5];//创建一个长度为5的数组
int []nums = {1,2,3,4,5};//这是一个直接赋值的长度为5的数组
//数组赋值
arrays[0] = 1;
arrays[1] = 2;
arrays[2] = 3;
arrays[3] = 4;
arrays[4] = 5;
//遍历输出数组中的数据
for(int i=0;i<5;i++)
{
System.out.println(arrays[i]);
}
}
}
数组的四个基本特点
- 数组长度是确定的。创建之后,大小不可改变。
- 其中元素必须是同类型的,不能出现混合类型。
- 数组中的元素类型可以是任何数据类型,包括基本类型和引用类型。
- 数组变量是引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。数组本身是对象,Java中对象是在堆中的,所以数组对象也是在堆中的。
内存分析
-
Java内存分析:
Java内存:
- 堆
- 存放new的对象和数组
- 可以被所有的线程共享,不会存放别的对象引用
- 栈
- 存放基本变量类型(包括这个基本类型的具体数值)
- 引用对象的变量(会存放这个引用在堆里面的具体地址)
- 方法区
- 可以被所有的线程共享
- 包含了所有的class和static变量
- 堆
数组下标
- 下标的合法区间:[0,lenght-1],如果越界就会报错。
public static void main(String[] args){
int[] nums = new int[2];
System.out.println(nums[2]);//这个就越界了,这个数组长度为2,下标范围是[0,1].
}
- ArrayIndexOutOfBoundsException:数值小标越界异常的报错!
多维数组
- 多维数组可以看成是数组的数组,比如二维就是一个特殊的一维数组,它的每一个元素都是一个一维数组。
- 二维数组
int nums[][] = new int[3][4];//可以看成一个三行五列的数组
Arrays类
-
数组的工具类java.util.Arrays
-
因为数组对象本身并没有什么方法给我们调用,但是API中提供了一个工具类Arrays给我们使用,可以对数据对象进行一些基本操作。
-
Arrays类中的方法都是static修饰的静态方法,使用时可以直接使用类名进行调用,不用使用对象调用,但也可以用对象调用。
-
具有以下功能:
- 给数组赋值:fill()。
- 对数组排序:sort(),升序。
- 比较:equals(),比较是否相同。
- 查找数组元素:binarySearch(),可以对有序数组进行二分查找法查找元素。
- 打印数组中元素:toString()。
-
查找API查看工具类的方法。