数组是一种线性数据结构,是一个使用连续的内存空间存放相同的数据类型的集合容器,与其他容器相比,数组的区别主要在于性能与保存基本类型的能力。
在Java中,数组是一种效率最高的存储和随机访问对象的方式,通过寻址公式,随机访问的时间复杂可以达到O(1),但是为了保持空间的连续性,在数组中插入、删除数据时,都需要移动后面数据,该操作的时间复杂度为O(n)。另外,由于空间上连续,所以数组对CPU缓存比较友好,借助CPU的缓存机制,预读数组中的数据,提高访问效率。但是,由于数组是定长的,一旦声明之后就不可以改变长度,所以如果长度声明过大或者过小都会造成问题。
数组与其他种类的容器之间的区别有三个方面呢:效率、类型和保存基本类型的能力。在Java中,数组是一种效率最高的存储和随机访问对象引用序列的方式
一、一维数组:
public class ArrayTest{
public static void main(String args[]){
int i;
int a[]=newint[5];
for(i=0;i<5;i++){
a[i]=i;
}
for(i=a.length-1;i>=0;i--){
System.out.println("a["+i+"]="+a[i]);
}
}
}
二、二维数组:
public class MatrixMultiply{
public static void main(String args[]){
int i,j,k;
int a[][]=new int [2][3];
int b[][]={{1,5,2,8},{5,9,10,-3},{2,7,-5,-18}};
int c[][]=new int[2][4];
for (i=0;i<=2;i++)
for (j=0; j<=3 ;j++)
a[i][j]=(i+1)*(j+2);
for (i=0;i<=2;i++){
for (j=0;j<=4;j++){
c[i][j]=0;
for(k=0;k<=3;k++)
c[i][j]+=a[i][k]*b[k][j];
}
}
for(i=0;i<=2;i++){
for (j=0;j<=4;j++)
System.out.println(c[i][j]+" ");
System.out.println();
}
}
}