数组是由同一类型对象护着基本数据组成。
数组是对象,先定义数组名字,用动态的方式分配数组空间,再初始化的。
每个数组都有一个成员变量length,即含有元素的个数。
Java中数组的创建和使用
数组声明->创建->元素初始化->使用数组
1. 数组引用的声明
-无需指明元素个数,也不为数组元素分配内存空间
-必须初始化以后才能使用,不然就是空引用。
-两种数组声明方式:Type[] arrayName; 或者 Type arrayName[];
2.创建数组(使用动态分配的方法)
-用关键字new构成数组的创建表达式,制定数组类型和元素个数。元素个数可以是常量或者变量(只要变量已经取得值了就行)。例如:int[] ai; ai=new int[10];
-也可以将数组的声明和创建一并执行:int ai[]=new int [10];
-也可以在一条语句中创建多个数组:String[] s1=new String[3],s2=new String[8];
3.数组元素初始化
-如果定义时不初始化,是不会有垃圾数据的,数值型自动初始化为0;引用类型自动变为空引用(null)?(什么意思?);boolean类型默认值为false;
-初始化方法:声明数组名时,给出数组初值:int a[]={22,33,44,55};
4.数组的使用
-单独使用元素:arrayName[index],index类型必须是int,short,byte,或char
-下标计数从0开始
-元素个数即为数组长度,可以通过arryName.length得到
-数组名是一个引用(即,就是一个名字)例如:
a1数组在声明时就已经初始化了,一共有五个元素,而a2数组只进行了声明,也就是只是一个引用。当执行a2=a1;语句时,有点像C语言中的指针,a1、a2两个引用都指向了同一个数组。最后两个for循环,无论是通过a1还是a2名称,都是去访问了同一个数组。也就是同一个数组的两个名字。
-当我们真正想要复制一个数组出来,则可以用arraycopy这个方法:
①数组元素部分复制:arraycopy的参数依次是:源数组,从源数组哪一个位置开始复制,目标数组,目标数组开始复制的位置,一共复制多少个字符。
上面插图的最后一句,表明在Java中,字符数组不能够被当做字符串直接输出,而是将字符数组作为初始值,构造一个新的String对象,在进行输出。
以上,一维数组
一下,多维数组(以二维数组为例):
-二维数组的声明和构造:
①int[][] myArray; //myArray是一个指向二维整数数组的引用,初始值为null(空引用)。使用时还需要初始化(new)。
②int[][] myArray=new int[3][5]; //同时构造并初始化引用,只是有了空间,没有初始值,默认均为0。
③int[][] myArray={{8,1,2,2,9},{1,9,4,0,3},{1,1,1,3,3}}; //也就是同时引用、构造并初始化数组。
例如:
-Java中二维数组的长度是指行的数量,而非所有元素!
-而每一行都有自己的长度。Java中每一行的长度可以不一样的。例如上述的第一行,长度是3;
输出结果:第一行是二维数组的行数,接下来分别是每一行的元素个数
总的来说,Java中的二维数组就是由一维数组构成的数组!
课后习题疑问:
6. 对于下列代码
String str1=”java”;
String str2=”java”;
String str3 = new String(“java”);
StringBuffer str4 = new StringBuffer(“java”);
以下表达式的值为true的是()
str1==str2
str1==str4
str2==str3
str3==str4