*一维数组的定义与访问
·定义
数据类型 [] 数组名 = new 数据类型[数组长度];
·数据类型就是数组中存储元素的数据类型
·方括号就是定义的数组
·数组名其实就是一个变量名,保存是数组的引用(数组的起始地址)
·new 运算符会在堆中分配一块连续的存储空间,把这块连续的存储空间的引用(起始地址)保存到数组中
int[] data = new int[5];
·定义一个数组可以存储五个int类型的数据,数组名是data
·通过索引值访问数组的元素
·定义一数组后,系统为每个元素指定一个索引值,索引值是从0开始的,即数组data的五个元素分别是
data[0]
data[1]
data[2]
data[3]
data[4]
*数组是一种引用数据类型
·数组可以作为方法的返回值类型,也可以作为方法的参数类型
*可变长参数
·定义一个方法可以接受任意个数据
·定义:
方法名( 参数类型 ... 参数名)
·一个方法最多有一个可变长参数
·可变长参数只能放在参数列表的最后
·在方法体中,把可变长参数当做数组使用即可
*数组扩容
·当定义一个数组之后,数组的长度就确定了,想要在数组中保存更多的数据就需要扩容
*数组扩容的步骤
·定义一个更大的数组
·把原来数组的内容复制到新的数组
·让数组名指到新的数组
*数组的特点
·优点:
·数组可以通过索引值(下标)可以实现数组的随机访问
·缺点:
·插入或删除元素效率比较低
·应用场景:
·数组中存取的元素以查询访问为主,很少进行添加/删除
*对象数组
数组中存储的是引用类型数据,就是对象数组
*Arrays工具类——数组工具类
·asList()————把数组转换为List列表
·int=binarySearch(int[] a ,int key)————在数组a中查找元素key 返回,key在数组中的索引值,
如果数组中不存在该元素返回负数,二分查找的前提是
数组已经有小到大排序
·int[]=copyOf(int [] original,int newLength)————把数组中original中的元素复制到一个新的数组
中,新的数组的长度是newLength
·int[]=copyOfRange(int []original,int form,int to)————把数组[fom,to)范围的元素复制到新数组中
·deepTostring(Object[] a)————把多维数组的元素转换为字符串
·fill(int[],int val)————使用val来填充数组a
·parallelSort(int[] a)————数组排序,适用于数组非常大的情况
·sort(int[] a)————对数组进行排序
·sort(T[]a, Comparator<? super T>c)————对象数组排序时候,可以指定比较器
·toString(int[]a)————把数组元素转换为字符串
*几种排序方法
·冒泡排序(从小到大)
从前往后两两比较,如果前面的数大于后面的数就交换
·选择排序(从小到大)
从剩余元素中选择最小的放到最前面
*二分查找
前提是已经从大大小排序