Java语法基础——数组
数组的概念
同一种类型数据的集合,其实数组就是一个容器。数组既可以存储基本数据类型,也可以存储引用数据类型。
数组的声明与创建
在Java中数组的定义方式共有三种
格式一:
元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
int[] x = new int[3];
格式二:
元素类型[] 数组名 = new 元素类型[]{元素, 元素, ……};
int[] arr = new int[] {13, 21, 14, 32, 9};
格式三:
int[] arr = {13, 21, 14, 32, 9};
数组的特点
- 四个基本特点
其长度是确定的。数组一旦被创建,它的大小就是不可以改变的。
其元素必须是相同类型,不允许出现混合类型。
数组中的元素可以是任何数据类型,包括基本类型和引用类型。
数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。
数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。 - 数组边界
下标的合法区间:[0,length-1],如果越界就会报错
ArraryIndexOutOfBoundsException:数组下标越界异常!
数组的使用
1、for-Each循环
遍历数组可以用增强型for循环,省去了下标,可在 Jdk1.5版本以上使用,适用于打印输出,不适合修改元素
for(int arr : arr){
}
2、数组做方法参数
数组可以作为参数传递给方法。
例如:
public static void printArray(int[] array) {
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
}
//调用printArray方法打印
printArray(new int[]{3, 22, 12, 43, 14, 2});
3、数组做返回值
public static int[] reverse(int[] list) {
int[] result = new int[list.length];
for (int i = 0, j = result.length - 1; i < list.length; i++, j--) {
result[j] = list[i];
}
return result;
}
Arrays类讲解
java.util.Arrays 类能方便地操作数组它提供的所有方法都是静态的。
功能如下
static String toString(xxx[] a);//返回包含a中元素的一个字符串,这些元素用中括号包围,并用逗号分隔。在这个方法以及后面的方法中,数组元素的类型xxx可以使int、long、short、char、byte、boolean、float、double
static xxx[] copyOf(xxx[] a,int end);
static xxx[] copyOf(xxx[] a,int start,int end);
//返回与a类型相同的一个数组,其长度为length或者end-start,数组元素为a的值。如果end大于a.length,结果会填充0或false
static void sort(xxx[] a);//使用优化的快速排序算法对数组进行排序
static int binarySearch(xxx[] a,xxx v);
static int binarySearch(xxx[] a,int start,int end,xxx v);
//使用二分查找算法在有序数组a中查找值v。如果找到v,则返回相应的下标;否则,返回一个负数值r,-r-1是v应插入的位置(为保持a有序)
static void fill(xxx[] a,xxx v);//将数组的所有数据元素设置为v
static boolean equals(xxx[] a,xxx[] b);//如果两个数组大小相同,并且下标相同的元素都对应相等,返回true