----------------------android培训、java培训、期待与您交流! ----------------------
一个数组是一个对象,它由同类型的一组成分元素所组成,每个元素均有一个唯一编号。元素的编号从0开始,因而对每个元素的引用可以由编号和下标运算符[ ]来进行,由于数组的高效性,它得到了非常广泛的使用。
Java中数组具有以下主要特性:
1. 数组是对象。
2. 数组是在运动时动态生成的。
3. 可以把数组赋给类型为Object的变量
4. 在数组上可以调用适用于Object的任何方法。
5. 一个数组对象包含一组具有相同数据类型的变量。
6. 数组中的变来能够也称为数组的成份(components)。
7. 如果数组的成份类型是T,则数组的类型为T[]。
8. 一个数组类型变量将拥有指向一个数组对象的引用。
9. 数组的成份类型本身可以使数组类型。
10.数组中部为数组类型的成份称为单元(element).
11.基元的类型可以是基本类型或引用类型。
12.数组的长度是数组成份的个数。
13.数组的长度在数组生成时设置,并不能随后改变。
14.数组的长度可以public final型实例变量的形式存取。
15.数组成份元素用0到length-1间的整形值来索引。
16.当违背特性1.5时,将产生ArrayIndexOutofBoundsException异常。
17.类型为short、byte和char的变量可用作数组索引。
18.数组可以调用Object.clone()方法进行复制。
19.数组可以调用Arrays.equals()进行相等性测试。
20.每个数组对性爱能够均实现了Cloneable和java.io.Serializable接口。
可以看到,特性3可从特性1得到。尽管数组类型不是class类型,但它们以Object类的扩展形式的面貌出现。特性7表明数组类型与class类型是不一致的地,事实上,数组类型是一种导出(derived types)类型,对每种类型T,存在一个相应的数组类型T[ ]。同样,对8钟基本类型的每一种,都存在相应的数组类型。
特性9允许数组的数组存在。从技术角度上讲是一回事。这是因为数组本身就是对象,数组的数组就成为对象数组,但从对象的角度上说,数组的数组与数组是一回事。这是因为数组本身就是对象,数组的数组就成对象数组,这其中的某个成份也可以不是数组,只要是对象就行(例1 将对此进行说明)。
应当注意到,特性13所导致的结果是:当把一个引用成份的值变为null时,对数组长度将不产生任何影响,null仍是引用成份的一个有效值。
例1 数组定义
下面是一些正确的数组定义例子:
public class Ex0201
{
public static void main(String [] args)
{
float x[];
x = new float[100];
args = new String[10];
boolean[] isPrime = new boolean[1000];
int fib[] = {0,1,1,2,3,5,8,13};
short[][][] b = new short[3][8][5];
double a[][] ={{1.1,2.2},{3.3,4.4},null,{5.5,6.6},null}
a[4] = new double[66];
a[4][65] = 3.14;
Object[] objects = {x,args,isPrime,fib,b,a};
}
}
程序的第一行声明X[ ]为一浮点数组,但并没有分配任何存储空间。第二行对x[ ]进行定义,并使之具有100个数组成份。
第三行声明args[ ]为String对象数组。但请注意声明数组的两种等效方法,方括号后缀可放在类型标识符或数组变量上,第四行使得args[ ]具有10个类型为String的成份。
第五行定义了具有1000个布尔型变量的数组isPrime[ ]。
第六行定义了8个整数的数组fib[ ],并对其进行初始化,例如fib[4]的值为3,fib[7]的值为13。
第八行定义数组a[ ][ ]为有5个成份的数组,而每个成份本身又是数组,数组成份为double类型,5个成份数组中仅有3个被分配,随后的代码行为a[4]分配一个有66个成份的double类型数组,并对最后一个成份进行赋值,其值为3.14。
最后一行定义了一个具有6个成份元素,其类型为Object的数组,每个成份又是数组,前4个成份数组中的成份类型均为基元(非数组),而b和a中的元素就不是基元,因为它们是数组类型。Objects中的基元包括2,5,13(成份fib中的成份),空null(成份a中的成份),2.2以及3.14(成份a的成份的成份)。
例1中的 a[ ][ ]称为粗糙数组(ragged array),因为它是一个具有不同长度的成份的二维数组。
在Java中,数组的成份类型可以是基本数据类型,引用类型或数组类型,当然,最简单的还是成分为基本数据类型的数组,如例1中的X[ ],isPrime[ ]及fib[ ]等,这些数组均可以进行排序。
---------------------- android培训、java培训、期待与您交流! ----------------------
详细请查看:http://edu.youkuaiyun.com/heima