数组的基本使用以及操作数组的方法
数组的定义及初始化
数组可以看成存放固定大小同类型元素的集合,在内存中是一段连续的空间。
创建数组:
元素的个数只能写在后面。
int[] arr = new int[5]; //创建存放5个int型元素的数组
double[] array2 = new double[5]; // 创建一个可以容纳5个double类型元素的数组
String[] array3 = new String[3]; // 创建一个可以容纳3个字符串元素的数组
当然,也可以像 C 语言那样创建数组,但是不推荐。
在创建数组的时候,指定数组中元素的个数叫做动态初始化:
dataType[] arrayName = new dataType[arraySize];
例如:
int[] arr = new int[5];
在创建数组的时候,指定了具体元素的值叫做静态初始化:
dataType[] arrayName = new dataType [ ]{value0, value1, ..., valuek};
例如:
int[] arr=new int[]{1,2,3,4,5}; //此时,元素的个数就不能填在 [ ]里
注意:
- 静态初始化会根据 { } 中元素个数来确定数组的长度。
- 静态初始化时, { } 中数据类型必须与 [ ] 前数据类型一致。
- 静态初始化可以简写,省去后面的 new dataType [ ]。
例如:int[] arr={1,2,3,4,5,6};
动态初始化和静态初始化都可以分成两步:
int[] array1;
array1 = new int[10];
int[] array2;
array2 = new int[]{10, 20, 30};
但是省略 new dataType [ ] 后就不能分成两步:
int[] array3;
array3 = {1, 2, 3}; 错误,省略 new int[] 后不能分成两步
数组的使用
数组在内存中是一段连续的空间,数组的元素是通过下标(也叫索引)访问的,数组索引从 0 开始,到数组长度 -1 结束。例如长度为 5 的数组,那么数组首元素的下标就是 0,最后一个元素的下标就是 4。
上面这个数组,能访问的元素就是 arr[0] 到 arr[4] ,超过 arr[4] 后就会报下标越界异常:
数组的长度:
我们可以通过 数组对象.length 获取到数组的长度,这样就可以更高效的访问数组里的元素:
for-each
这里介绍 for 循环的另一种使用,可以更高效的遍历数组。语法格式如下:
for(type element: array)
{
System.out.println(element);
}
例如:
数组作为函数的参数
当我们将基本数据类型当作形参传递时,并不会改变实参:
当数组作为参数传递时:在 func2 方法内部修改数组的内容,方法外部的数组内容也发生改变:
这是因为数组是引用类型,按照引用类型来进行传递,是可以修改其中存放的内容的。
数组作为函数的返回值
如果想将数组作为参数返回时,只需在相应的函数返回值类型做修改即可。
例如,在方法中求斐波那锲数列,并将结果返回:
操作数组的方法
下面介绍几个 Java 提供的方法,可以更灵活的使用数组:
将数组以字符串的形式打印:
Arrays.toString(int[] a);
案例:
数组拷贝:
Arrays.copyOf (int[] original, int newLength)
original:被拷贝的数组。
newLength:要拷贝的长度。
案例:
拷贝数组的某个范围:
Arrays.copyOfRange(int[] original, int from, int to)
案例:
将指定的值分配给指定的 int 数组的每个元素。
Arrays.fill(int[] a, int val)
案例:
按照数字顺序排列指定的数组。
Arrays.sort(int[] a)
案例:
在数组中查找指定的值,若数组无序,使用前需将数组排序。
Arrays.binarySearch(int[] a, int key)
如果数组中有指定的值,则返回指定值的下标,若没有指定值,则返回指定值按顺序放到数组中的下标值减一。
案例:
以上就是关于数组的基本使用。