数组指:相同类型的变量按一定顺序组成的一种复合函数类型,而这些相同类型的变量称为数组的元素或单元;
特点:
1、数组的创建需要经过两个步骤:声明数组、为数组分配变量;
2、数组通过数组名加索引来使用数组的元素;如:a[2]
3、数组属于引用型变量;
数组声明(只是声明,并没有进行元素的分配)
一维数组声明有两种形式:
1、int a[],b[],c[] ;
2、int [] a,b,c[] ; //其中c为二维数组:语句相当于 int a[],b[],c[][] ;
二维数组声明有两种形式:
1、int a[][],b[][],c[][] ;
2、int [][] a,b,c[] ; //其中c为三维数组:语句相当于 int a[][],b[][],c[][][];
上面第2种形式的声明中,可以同时声明一维、二维或多维数组;
数组元素的分配(以一维数组进行演示)
数组元素的分配有两种方式实现:
1、先进行数组的声明,再进行数组元素的分配;
int test[] ; //声明一个数组test;
test = new int [10] ; //为数组test分配了十个元素个数
2、在声明数组的同时进行元素的分配;
int test[] = new int[3]; //声明一个数组test,并为其分配了三个元素个数
* 二维数组的声明和一维数组是一样的;
需要注意的是:
int test[] ; //声明一个数组test;
test[] = new int [10] ; //为数组test分配了十个元素个数
这样子是错误的,程序报错:The left-hand side of an assignment must be a variable
原因:
数组是通过数组名加索引来进行使用的,当使用test[] = new int [10] ; 时报错,是因为此时的test[]
是一个没有类型的数据,系统是不能对其进行解析的,所以需要通过数组名进行new,系统才能进行解析并分配数组元素;
对数组元素进行赋值,使用
test [0] = 1 ; test [2] = 11 ; test [3] = 111 ; test [4] = 111 ;
而没有进行赋值的数组元素默认是:0 ;
对于二维数组是:
int ss[][] = new int[3][3];
ss[1][1] = 1 ; ss[2][2] = 1 ; ss[3][3] = 1 ;
数组初始化:(声明数组的同时进行元素的分配并进行赋值)
一维数组:
double arrayone[] = {12.2 , 33.3 , 45.5 , 65.6} ;
二维数组:
double arraytwo[][] ={ { 12.2 , 33.3 , 45.5 , 65.6 } ,{ 2.2 , 3.3 , 5.5 , 6.6 } };
查看数组的长度:length ;
数组的长度指:数组元素的个数 ;
对于一维数组:“数组名.length”输出的值就是该数组的长度,也是该数组元素的个数;
如:int test [] = new int[5]; System.out.println(test.length); //输出5,即该一维数组的长度、元素个数是5
对于二维数组:“数组名.length”输出的值就是二维数组中所包含的一维数组的个数
如:int test1 [][] = new int[2][3] ;
System.out.println(test1.length); //输出2,即该二维数组中一维数组的个数是2
System.out.println(test1[0].length); //输出3,即该二维数组中每个一维数组的长度、元素个数是3
System.out.println(test1[1].length); // 与 test1[0].length 一样输出3;范围是不能超过1,看一维的长度;
需要注意的是:
使用length时,数组长度是从1开始算起的;如上面的 test1.length 、test1[0].length 所输出的值
而在使用数组名加索引时,数组是从0开始算起的;如上面的 test1[0] 、test1[1]
数组的引用:
输出一维数组的引用:
int test[] = {2,5,6,4,7};
System.out.println(test); //结果输出一维数组test的引用
输出二维数组的引用:
int testont[][] = {{2,3,5,4},{2,9,8,7},{1,5,6,4},{1,2,7,4}};
System.out.println(testont); //结果输出二维数组testont的引用
输出二维数组中一维数组的引用:
System.out.println(testont[0]); //结果输出二维数组中一维数组testont[0]的引用
System.out.println(testont[1]); //结果输出二维数组中一维数组testont[1]的引用
注意:testont[0] 、testont[1] 输出的引用是不一样的
数组引用的赋值:
int test[] = {2,5,6,4,7};
int tests[] = {3,5,7,6,8};
System.out.println(test); //输出引用不一样
System.out.println(tests+"\n"); //输出引用不一样
test = tests ;
System.out.println(test); //输出引用一样
System.out.println(tests+"\n"); //输出引用一样
相对于char类型的数组,在输出引用时要和字符串进行并置运算,才能进行输出;
如:char test2[] = {'h','和','1','5','!'} ;
在使用 System.out.println(test2 ); // 输出的结果并不是test2的引用,而是 h和15!
使用:System.out.println(""+test2 ); // 输出test2的引用