数组
声明一维数组有以下两种方式
数组的元素类型 数组名字[]; float A[];
数组的元素类型[] 数组名字; float[] A;
注意:与C/C++ 不同,Java不允许在声明数组中的方括号内指定数组元素的个数
创建数组
为数组分配内存空间的格式如下
数组名字 = new 数组元素的类型[数组元素个数];
声明数组和创建数组(分配内存空间)可以同时进行,例如:
float Array[] = new float[4];
二维数组也是如此:
int Array[][];
Array = new int[3][4];
或者:
int Array[][] = new int[3][4];
对于二维数组。构成二维数组的一维数组不必有相同的长度,在创建二维数组时可以分别指定构成该二维数组的一维数组的长度。
int a[][] = new int [3][];
a[0] = new int[6];
a[2] = new int[12];
a[3] = new int[8];
注意:Java允许使用int型变量的值指定数组元素的个数。
int size = 20;
double number[] = new double[size];
Length
对于一维数组,"数组名.length"的值就是数组中元素的个数;对于二维数组,"数组名.length"的值是他含有的一维数组的个数
数组的初始化
在创建数组后,系统会给每一个元素一个默认的值,例如,float型时0.0;
在声明数组的同时也可以给数组元素一个初始值,
float A[] = {12.0f,12.3f,15.4f,45.2f};
也可使用若干个一维数组初始化二维数组
int a[][] = {{1},{1,1},{1,2,3},{1,2,3,4,5}};
复制数组
两个类型相同的数组具有相同的引用,那么他们就有完全相同的内存单元
int a[] = {1,2}, b[];
b = a;//a与b的内存引用相同
单纯用赋值语句,会使后者元素值的改变影响到前者的元素值
1. arraycopy方法
让系统System调用方法:
public static void arraycopy(sourceArray,int index1,copyArray,int index2,int length)
该方法将数组sourceArray从索引index1开始的length个元素中的数据复制到copyArray中,copyArray从第index2个元素开始存放这些复制过来的数据,如果copyArray不能存放这些数据,程序运行将发生异常。
2. copyof方法
public static double[] copyOf(double[] original,int newLength)
该方法可以将original指定的数组中从索引0开始的newLength个元素复制到一个新的数组当中,并且返回这个新的数组,新数组的长度为newLength
若newLength的值大于original长度,copyOf方法返回新数组的第newLength索引后的值取默认值。
- copyOfRange方法
punlic static double[] copyOfRange(double[] original ,int from,int to)
该方法可以将original指定的数组从索引from到to-1的元素复制到一个新的数组当中,新的数组长度为to-from。
若to的值大于original的长度,copyOfRange方法返回新数组的第original.Length-from索引后的值取默认值。
排序与二分法查找
用Array类调用方法实现对数组的快速排序
public static void sort(double a[])//把参数a指定的double类型数组按升序排序
public static void sort(double a[],int start,int end)//把参数a指定的double类型数组中索引从start至end-1的元素按升序排序
public static int binarySearch(double[] a,double number)//判断参数numbe指定的数是否在参数a指定的数组中(前提参数a指定的数组需要有序)