初识JAVA数组
1. 一维数组
1.1 一维数组的定义
type arrayname[]; type[] arrayname;
当中类型(type)能够为java中随意的数据类型,包含简单类型组合类型,数组名arrayname为一个合法的标识符,[]指明该变量是一个数组类型变量。
另外一种形式对c++开发人员可能认为非常奇怪,只是对java或c#这种开发语言来说,另外一种形式可能更直观,由于这里定义的仅仅是个变量而已,系统并未对事实上例化,仅仅需指明变量的类型就可以,也不需在[]指定数组大小。(第一种形式是不是仅仅是为了兼容曾经的习惯,毕竟c语言的影响太大了?)
比如:
int intarray[]; 声明了一个整型数组,数组中的每一个元素为整型数据。与c、c++不同,java在数组的定义中并不为数组元素分配内存,因此[]中不用指出数组中元素个数,即数组长度,并且对于如上定义的一个数组是不能訪问它的不论什么元素的。我们必须为它分配内存空间,这时要用到运算符new,其格式例如以下: arrayname=new type[arraysize]; 当中,arraysize指明数组的长度。如: intarray=new int[3];
为一个整型数组分配3个int型整数所占领的内存空间。
通常,这两部分能够合在一起,格式例如以下:
type arrayname=new type[arraysize]; 比如: int intarray=new int[3];1.2 一维数组元素的引用
定义了一个数组,并用运算符new为它分配了内存空间后,就能够引用数组中的每个元素了。数组元素的引用方式为:
arrayname[index]
当中:index为数组下标,它能够为整型常数或表达式。如a[3],b[i](i为整型),c[6*i]等。下标 从0開始,一直到数组的长度减1。对于上面样例中的in-tarray数来说,它有3个元素,分别为:
intarray[0],intarray[1],intarray[2]。注意:没有intarray[3]。
另外,与c、c++中不同,java对数组元素要进行越界检查以保证安全性。同一时候,对于每一个数组都有一个属性length指明它的长度,比如:intarray.length指明数组intarray的长度。
public class arraytest{ public static void main(string args[]){ int i; int a[]=new int[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]); } }
执行结果例如以下:
c:/>java arraytest a[4]=4 a[3]=3 a[2]=2 a[1]=1 a[0]=0
该程序对数组中的每一个元素赋值,然后按逆序输出。
1.3 一维数组的初始化
对数组元素能够依照上述的样例进行赋值。也能够在定义数组的同一时候进行初始化。
比如:
int a[]={1,2,3,4,5};
用逗号(,)分隔数组的各个元素,系统自己主动为数组分配一定空间。
与c中不同,这时java不要求数组为静态(static),事实上这里的变量相似c中的指针,所以将其作为返回值给其他函数使用,仍然是有效的,在c中将局部变量返回给调用函数继续使用是刚開始学习的人非常easy犯的错误。
2. 多维数组
与c、c++一样,java中多维数组被看作数组的数组。比如二维数组为一个特殊的一维数组,其每一个元素又是一个一维数组。以下我们主要以二维数为例来进行说明,高维的情况是相似的。
2.1 二维数组的定义
二维数组的定义方式为:
type arrayname[][];
比如:
int intarray[][];
与一维数组一样,这时对数组元素也没有分配内存空间,同要使用运算符new来分配内存,然后才干够訪问每一个元素。
对高维数组来说,分配内存空间有以下几种方法:
1. 直接为每一维分配空间,如:
int a[][]=new int[2][3];
2. 从最高维開始,分别为每一维分配空间,如:
int a[][]=new int[2][]; a[0]=new int[3]; a[1]=new int[3];
完毕1中同样的功能。这一点与c、c++是不同的,在c、c++中必须一次指明每一维的长度。
2.2 二维数组元素的引用
对二维数组中每一个元素,引用方式为:arrayname[index1][index2] 当中index1、index2为下标,可为整型常数或表达式,如a[2][3]等,相同,每一维的下标都从0開始。
2.3 二维数组的初始化
有两种方式:
1. 直接对每一个元素进行赋值。
2. 在定义数组的同一时候进行初始化。
如:int a[][]={{2,3},{1,5},{3,4}};
定义了一个3×2的数组,并对每一个元素赋值。