- 声明数组:elementType [] arrayRefvar;(元素类型[] 数组引用变量)
例如:double [] myList;(推荐该种方法)
另一种:类似C语言方式:double myList[];
不同于基本数据类型的声明,数组变量的声明并不在内存中给数组分配任何空间,只是创建一个对数组的引用的存储位置。如果变量不包含对数组的引用,其变量值为null。除非数组已经被创建,否则不能给它分配任何元素。
- 创建数组。
arrayRefvar = new elementType[arraySize]; - 声明数组变量、创建数组、将数组引用赋值给变量合为一:
elementType[] arrayRefvar = new elementType[elementSize];
例如:double [] myList = new double[10]; - 数组变量(myList)存储的是指向数组的引用。
- 创建数组后,元素被赋予默认值:
- 数值型基本数据类型:默认为0;
- char型:默认为'\u0000';
- boolean:默认为false;
- 数组大小:myList.length
- 数组初始化语句:
elementType [] arrayRefvar = {value0,value1,......valuek};
声明数组,创建数组,初始化数组合为一体。
例如:double [] myList = {1.9,2.9,3.4,3.5}; - 打印数组中每一个元素
- 对于数值型:使用for循环
- 对于char型,直接System.out.println(myList);
- for-each循环:不使用下标变量遍历整个数组
for(each u:myList){ System.out.println(u); } //变量u与myList中元素类型相同
- 数组的赋值
java中,赋值语句可以复制基本数据类型的变量,但不能赋值数组。例如:list2=list1,得到的结果是:list1的引用值复制给list2,即list1与list2将指向同一个数组。list2原来指向所引用的数组不能再引用,变成了垃圾,被java虚拟机自动回收。
复制数组的三种方法:- 循环语句逐个复制。
- System类中静态方法:arraycopy
System.arraycopy(sourceArray,src_pos,tarArray,tar_pos,length)
复制前必须创建目标数组以及分配给他内存空间。 - 使用clone复制数组。
- 方法传递数组
public static void function(int [] array)
调用:function(arrayName);
另一种调用:匿名数组:funtion(int []{3,2,1,4,6});没有显示的引用变量- 基本数据类型参数:传递的是实参的值。
- 数组类型:参数值是数组的引用,改变方法中的数组,方法外的数组也改变了。
- 方法中返回数组
引用:public static int[] reverse(int [] list){ return result; //result为数组。 }
int [] list = reverse(list1);
- Array类
- 排序:
java.util.Arrays.sort(list);
或者局部排序:java.util.Arrays.sort(list,start,end);
- 查找:`java.util.Arrays.binarySearch(list,key);
- 判断数组相等:equals
java.util.Arrays.equals(list1,list2) //true or false
- fill填充整个数组或者部分数组
java.util.Arrays.fill(list1,number) //fill key to the whole array java.util.Arrays.fill(list1,start,end,number) //fill key to the partial array
- 排序: