一. 一维数组
一维数组思维导图:
一维数组实质上是一组相同类型数据的集合,当需要在程序中处理一组数据或者传播一组数据时,可以硬功这种类型的数组。
1.创建一维数组
数组作为对象允许使用new关键字进行内存分配。在使用数组前,必须首先定义数组变量所属的类型,即声明数组。声明一维数组有两种形式:
数组元素类型 数组名字[];
数组元素类型[]数组名字;
数组元素类型:决定了数组的数据类型,它可以是Java中任意的数据类型,包括基本数据类型和非基本数据类型。
数组名字:为一个合法的标识符。
符号"[]":指明该变量是一个数组类型变量,单个"[]"表示要创建的数组是一堆数组。
声明数组后,还不能访问它的任何元素,因为声明数组仅仅是给出了数组名字和元素的数据类型,要想真正使用数组还要为其分配内存空间,且分配内存空间时必须指明数组的长度。
数组名字=new 数组元素类型{数组元素的个数};
数组名字:已经声明的数组变量的名称。
new: 对数组分配空间的关键字。
数组元素的个数:指定数组中变量的个数。即数组的长度。
说明:使用new关键字为数组分配内存时,数组中各个元素的初始化值都为0.
创建数组和分配内存不一定要分开执行,可以在创建数组时直接为变量赋值:
数组元素类型 数组名[]=new 数组元素类型[数组元素的个数];
注意:无论用何种方法声明数组,前面的中括号中都不可以填写内容,柔则将会在编译时出现错误。
2.初始化一维数组
数组的初始化可分别初始化数组中每个元素。数组的初始化有两种形式。
int arr[] =new int[]{1,2,3,5,25}; //第一种初始化方式
int arr2[]={34,23,12,6}; //第二种初始化方式
数组的初始化方式是:把数据类型包括在大括号之内,中间用逗号分开数组元素的值,系统自动为数组分配一定的空间。第一种初始化方式,创建5个元素的数组,其值依次为1、2、3、5、25;第二种初始化方式,创建4个元素的数组,其值依次为34、23、12、6.
初始化数组是可以省略new运算符和数组的长度,编译器将根据初始值的数量来自动计算数组的长度,并创建数组。
3.一维数组遍历
for循环
//数组的遍历 for(int n=0;n<a.length;n++) { System.out.println(a[n]); } System.out.println("Foreach循环");
foreach循环
//foreach循环 for(int t :a) { System.out.println(t); }
二. 二维数组
二维数组思维导图
如果一位数组中的各个元素仍是一维数组,那么他就是一个二维数组。二维数组常用语表示表,表中的信息以行和列的形式组织,第一个下标代表元素所在的行,第二个下标代表元素所在的列。
1.二维数组的创建
声明二维数组的方法有两种:
数组元素类型 数组名字[][];
数组元素类型[][]数组名字;
数组元素类型:决定了数组的数据类型,它可以是Java中任意的数据类型,包括基本数据类型和非基本数据类型。
数组名字: 为一个合法的标识符。
符号“[]”:指明该变量是一个数组类型变量,两个“[]”表示要创建的数组是二维数组。
例题 创建二维数组。
int myarr[][];
与一维数组一样,如果二维数组在声明时没有分配内存空间,同样也要使用关键字new来分配内存,,然后才可以访问每个元素。
二维数组可以看成是由多个一维数组所组成,在给二维数组分配内存时,可以为这些一维数组同时分配相同的内存。第一个括号中的数字是一维数组的个数,第二个括号中的数字是这些一维数组的长度。
例题:为二维数组每一维分配相同内存。
a=new int[2][4];
为二维数组分配内存,分配后二维数组a拥有两个长度是4的一维数组。
给二维数组分配内存时,还可以对其每一个一维数组单独分配内存,且分配的内存可以并不相同,在第一个中括号中定义一维数组的个数,然后就利用一维数组分配被熏得方法分配内存。
2.二维数组初始化
二维数组的初始化与一维数组初始化类似,同样可以使用大括号完成二维数组的初始化。
type arrayname[][]={value1,value2,……valuen};
type:数组数据类型。
arrayname:数组名称,一个合法的标识符。
value:数组中各元素的值。
例题:初始化二维数组
int myarr[][]={{12,0},{45,10}};
初始化二维数组后,要明确数组的下标都是从0开始,int型二维数组是以int a[][]来定义的,所以可以直接给a[x][y]赋值。如给a[1]的第二个元素赋值,a[1][1]=20;
3.二维数组遍历
for循环嵌套
需要使用双层for循环,还要通过数组的length属性活的数组的长度。
//遍历 //for for(int m=0;m<2;m++) { for(int n=0;n<3;n++) { System.out.print(e[m][n]+" "); } System.out.println(); }
foreach循环嵌套
//foreach for(int[] t:e) { for(int y:t) { System.out.print(y+" "); } System.out.println(); } int[][]k=new int[][]{{1,2,3,4},{5,6,7},{8,9},{0}}; for(int[] t:k) { for(int y:t) { System.out.print(y+" "); } System.out.println(); }