1.数组(Array)的性质
1.1 数组是线性序列的
1.2 数组是一种效率最高的存储和访问对象引用序列的方式。
1.3 数组的数组对象大小是被固定的
1.4 数组实质上保存的是引用(指向在堆中创建的一个真实对象)
2.返回一个数组
public class ArrayTest {
public static void main(String[] args) {
sardine A=new sardine();
for(int i=0;i<A.getArray().length;i++){
System.out.println("返回的数组:"+A.getArray()[i]);
}
}
}
class sardine {
public String[] getArray() {
String[] Array0 = {"沙", "丁", "鱼", "flat"};
return Array0;
}
}
返回一个数组,注意:方法的返回类型要为数组类型
3.多维数组
public String[][] MultidimensionalArray() {
String[][] Array1 = {
{"沙", "丁", "鱼", "flat"},
{"剑", "鱼", "flat"},
{"比", "目", "鱼", "flat"},
};
return Array1;
}
多维数组,在我理解就是套了几层数组的数组。
4.数组与泛型
数组不支持泛型的,严格来说是没法实例化具有参数类型的数组:
这里你可以看出编译时,AA实例化的是new List[10]是成功的,但AAAA实例化new List<sardine>[10]却是失败的。
这样的原因就是因为实例化数组时,会擦除(也就是之前泛型章讲的移除参数类型),而数字同时必须知道确切的类型保证类型安全。
不过你也可以使用下面这个方法取巧地通过实例化。(创建非泛型数组后,在转型成泛型数组)
5.创建测试数据
这里主要介绍了标准类库Arrays里面的一个fill方法
int[] a1= new int[5];
boolean[] a2=new boolean[2];
String[] a3=new String[4];
float[] a4=new float[5];
Arrays.fill(a1,1);
Arrays.fill(a2,true);
Arrays.fill(a3,"沙");
System.out.println("String数组a3 第一次:"+Arrays.toString(a3));
Arrays.fill(a3,1,2,"丁");
Arrays.fill(a3,2,3,"鱼");
Arrays.fill(a3,3,4,"flat");
Arrays.fill(a4,2.1f);
System.out.println("int数组a1:"+Arrays.toString(a1));
System.out.println("boolean数组a2:"+Arrays.toString(a2));
System.out.println("String数组a3 第二次:"+Arrays.toString(a3));
System.out.println("float数组a4:"+Arrays.toString(a4));
这个fill方法其实蛮鸡肋的,只能用一个值来填充各个位置,要修改的时候也是要写fill加两个参数设定一个范围来填充。
注意:这个方法虽然也可以填充对象,但是对象也是填充到各个位置的,不要妄想填个数组对象进去,就能把数组里的东西也分开填充,这是不行的。
6.Arrays的实用功能
这里它首先介绍了一个不是Arrays但也很有用的方法
6.1 复制数组-用System.arraycopy()方法
String[] copyArrays=new String[3];
System.arraycopy(A.getArray(),0,copyArrays,0,copyArrays.length);
System.out.println("复制数组:"+Arrays.toString(copyArrays));
可以发现,System.arraycopy(要复制的数组对象,开始的下标,要被赋予的数组对象,开始的下标,要复制的长度)
6.2 数组比较-Arrays.equals()方法。
Arrays.equals(数组1,数组2);
这里相等的条件是数组的元素个数相同且对应位置的元素也相同。相同返回true,不同返回false.
6.3数组排序+数组元素比较 -实现comparable接口
6.4在已排序的数组中查找-使用Arrays.binarySearch()方法
Arrays.sort(copyArrays);
int location=Arrays.binarySearch(copyArrays,"沙");
System.out.println("数组中沙的位置:"+location);
Arrays.binarySearch(数组,要找的元素) 找到元素返回大于等于0,找不到返回负数
这里注意先决条件:要已排序,无排序会返回负数(表示找不到)