数组的概念
- 数组是用来存储一组相同类型数据的数据结构
- 数组有一维和多维
- 数组可以为原始类型或类类型
- 数组是一个对象,而不是为原始类型储备的存储器
声明数组
数组变量被声明了,但没有分配空间
int[] myint;
int myint[];
MyClass[] myClassArray;
MyClass myClassArray[];
创建数组
- 数组是一个对象,因此使用new创建一个数组对象
- 创建数组的目的是为数组开辟空间
char[] s;//声明数
Point[] p;
s = new char 20;//创建数组
p = new Point 30;
初始化数组
- 数组的每个元素都要逐一初始化
char[] s;//声明数组
Point[] p;
s = new char[10];//创建数组
p = new Point[20];
p0 = new Point(10,10);//初始化数组
p1 = new Point();//Point()默认为(0,0)
·
·
·
p19= new Point(90,100);
- 数组的声明、创建和初始化用一条语句完成
String[] names={"张三","李四","王五"};
也可以这样编写:
String s1="张三";
String s2="李四";
String s3="王五";
String[] movies={s1,s2,s3};
只有初始化数组时才能用到“{ }”,像下面编写的代码就不行:
int[] arr=new int[5];
arr={1,2,3,4,5};//不能编译
只有象下面这样写才行
int[] arr={1,2,3,4,5};
多维数组
理论上讲,所有的java数组都是一维的,多维数组是数组的数组。
int twoDim [][] = new int [3][];
Int[][] twoDim = new int[3][];
twoDim[0] = new int[5];
twoDim[1] = new int[3];
twoDim[2] = new int[4];
twoDim[0][0]=1;
twoDim[0][1]=2;
...
java语言允许非矩形的数组
twoDim0= new int[2];
twoDim1= new int[4];
twoDim2= new int[6];
twoDim3= new int[8];
数组界限
所有数组的下标都从0开始
int list[] = new int[10];
for (int i= 0; i< list.length; i++)
System.out.println(list[i]);
list.length为10
复制数组
- 不能调整数组的大小
- 可使用相同的引用变量来引用一个全新的数组
int elements[] = new int[6];
elements = new int[10];
- 使用System.arraycopy()方法复制数组
函数原型为:public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)
使用举例:
int myArray[]={ 1, 2, 3, 4, 5, 6 };
int hold[]={ 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 };
System.arraycopy(myArray, 0, hold, 0, myArray.length);
- 当然也可以通过遍历逐个元素复制数组