什么是Java数组?
1、数组是一种固定类型固定大小的数据集合。所谓固定类型是指:数组在存放数据的时候只能存放同一个类型的数据,而所谓固定大小是指在定义一个数组变量时它的大小是确定的。
2、数组是一种线性的数据结构。所谓线性的数据结构是指在数据元素的非空集合中,存在唯一一个首元素;唯一一个末元素;除首元素外每一个元素只有一个直接前驱,除末元素外每一个元素只有一个直接后继。
3、Java数组是一种引用数据类型(类类型)。在Java中数据分为基本数据类型和引用数据类型。基本数据类型:byte、short、char、int、long、float、double、boolean八种。引用数据类型:类、接口、数组三种。
Java数组的属性和方法
既然Java数组是一种类类型,作为类的一种,Java数组必定具有自己的属性和方法。Java数组具有唯一 的属性:length。我们可以对一个数组对象arry通过arry.length的方式得到数组对象arry的长度。
Java数组的使用
1、数组的定义:定义一个一维数组有以下几种格式
数据类型 [] 数组名 =new 数据类型[数组长度];
数据类型[] 数组名 =new 数据类型[]{数组数据……};
数据类型[]数组名 =new 数据类型{数组数据……};
数据类型 [] 数组名;
数组名 = new 数据类型[长度];
数组名 = new 数据类型[]{数据、…};
代码示例:定义一个长度为10的整形数组,数组元素为从0到9。
int []arry=new int[10];//格式一定义一个数组
for(int i=0;i<10;i++){ //利用for循环为数组赋值
arry[i]=i;
}
int []arry=new int[]{0,1,2,3,4,5,6,7,8,9};//格式二定义一个数组,直接为数组元素赋值
int []arry=new int{0,1,2,3,4,5,6,7,8,9};//格式三定义一个数组,直接为数组元素赋值
int []arry; //格式四定义一个数组,直接为数组元素赋值
arry=new int{0,1,2,3,4,5,6,7,8,9};
int []arry; //格式五定义一个数组,直接为数组元素赋值
arry=new int[]{0,1,2,3,4,5,6,7,8,9};
但是 有几种格式是错误的如
int []arry;
arry={0,1,2,3,4,5,6,7,8,9};
int []arry;
arry[]={0,1,2,3,4,5,6,7,8,9};
这是为什么呢?因为数组是一种引用类型也就是一种类类型,我们在示例化一个数组对象的时候必须用 new关键字来为数组对象在堆中开辟一个空间。以上代码出错的地方在于没有使用new关键字开辟对应的空间。
定义一个二维数组有以下几种格式:
数据类型 数组名 [][]=new 数据类型[行数][列数];
数据类型 数组名 [][]=new 数据类型[行数][列数]{{数据元素……}{数据元素……}};
数据类型 数组名 [][]=new 数据类型{{数据元素……}{数据元素……}};
数据类型 [][] 数组名;
数组名 = new 数据类型[行数][列数];
数组名 = new 数据类型[][]{{数据、…},…};
代码示例:定义一个2维的整形数组
arry2[0][0]=0;
arry2[0][1]=1;
arry2[1][0]=1;
arry2[1][1]=2;
int [][]arry2=new int[2][2]; //格式1 定义一个二维数组
for(int i=0;i<2;i++){ //利用双层循环为二维数组赋值
for(int j=0;j<2;j++){
arry2[i][j]=i+j;
}
}
int [][]arry2=new int[2][2]={{0,1}{1,2}};//格式二直接为二维数组赋值
int [][]arry2=new int={{0,1}{1,2}};//格式二直接为二维数组赋值
int []arry2; //格式三直接为二维数组赋值
arry2[][]=new int[2][2]{{0,1}{1,2}};
int []arry2; //格式四直接为二维数组赋值
arry2[][]=new int{{0,1}{1,2}};
2、数组元素的访问
数组元素的访问非常方便 格式为:数组名[下标];
2、1如访问以上arry数组中第i个元素
int K=arry[i-1]; //将arry数组中的第i个元素赋给整形变量K
注意数组元素的下标是从0开始的,也就是说arry数组第一个元素是arry[0]。arry数组第i个元素是arry[i-1]。
2、2同理访问二维数组第i行第j列的元素
int k=arry2[i-1][j-1];
3、数组大小的获得
3、1获取一维数组的大小
int k=arry.length; //数组的唯一属性是length
3、2获取二维数组的行数
数组名.length
int i=arry2.length;
3、3获取二维数组第i行的列数
数组名[i-1].length
int j=arry2[i-1].length;
3、4获取整个二维数组的大小
把每一行的列数相加
int k=0;
for(int i=0;i<arry2.length;i++){
k+=arry2.length[i].length;
}
数组的优点和缺点
数组的优点相对于队,栈,树,图等数据结构来说,在于访问和设置元素的值都非常方便,只要知道元素对应的下标值就能非常便捷地访问和设置。
数组的缺点在于在定义数组的时候必须确定数组的大小,当我们不知道数组中到底要存多少个数据时,这就非常麻烦了。比如我们要用数组来存储学生信息,那么这个数组要定义成多大的长度呢?如过定义小了那么学生信息有可能存储不完,定义大了那么会造成内存空间的浪费。