数组
数组是一个大的数据集合
数组的本质
数组的本质是什么呢?数组就是一系列空间大小相等且地址连续的一片存储空间
空间大小相等,地址连续都是为了方便我们维护和操作数据
但是存储的是数据的地址
数组与堆的关系
数组存放在堆中,在堆中存放的数据称为对象,堆中的创建的对象都是有默认初始值
整型初始值为0,浮点型为0.0,布尔类型为false,引用数据类型为null
数组变量
数组的地址存在数组变量中:数组的地址就是数组在堆内存中首元素的地址
为什么会存在数组呢?
当程序在执行中,需要读取大量数据,例如,需要读取50个数字,并且计算它们的平均值。想输入50个数据,在没学数组之前,方法是创建50个变量,这样会使重复的代码太多,显然这样编程方法是不现实的,所以Java提供了数组这样的数据结构,可以用一个数组来存储这些相同数据类型的元素。总的来说,数组主要解决多变量多数据的存储问题,方便程序后期统一维护操作数据。
数组的访问与创建
数组的创建
- 数据类型[] 数组名=new 数据类型[长度]; 长度可以是常量,也可以是变量,但是变量要有值,一旦创建无法更改
- 数据类型[] 数组名=new 数据类型[]{1,2,3,4,5};
- 数据类型[] 数组名={1,2,3,4,5};
- 数据类型[][] …… ………………指二维数组
数组一旦被创建,其大小不能更改,使用数组时,通过下标来访问数组中的元素
Arrays类
是关于数组的工具类
Math、Scanner、String(不是工具类)
常用函数如下:
- static int binarySearch(int[] a, int key) //用二分搜索的方式寻找key,返回角标
- static void sort(int[] a) //对a进行排序
- static int[] copyOf(int[] original, int newLength) //复制指定数组,可以指定长度,多余部分用默认0表示(这里指int型)
- static String toString(int[] a) //将数组a变为[x,x,x,x,x,……,x]的字符串形式
- static boolean equals(int[] a, int[] a2) //判断两个数组是否相等