黑马程序员____数组的特性

本文深入探讨了Java数组的17个核心特性,包括数组作为对象、动态生成、类型转换、长度限制以及索引机制等。通过具体的代码示例,展示了如何定义、初始化和操作数组,特别强调了数组的灵活性和广泛用途。

----------------------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]的值为3fib[7]的值为13

第八行定义数组a[ ][ ]为有5个成份的数组,而每个成份本身又是数组,数组成份为double类型,5个成份数组中仅有3个被分配,随后的代码行为a[4]分配一个有66个成份的double类型数组,并对最后一个成份进行赋值,其值为3.14

最后一行定义了一个具有6个成份元素,其类型为Object的数组,每个成份又是数组,前4个成份数组中的成份类型均为基元(非数组),而ba中的元素就不是基元,因为它们是数组类型。Objects中的基元包括2513(成份fib中的成份),空null(成份a中的成份),2.2以及3.14(成份a的成份的成份)

1中的 a[ ][ ]称为粗糙数组(ragged array),因为它是一个具有不同长度的成份的二维数组。

Java中,数组的成份类型可以是基本数据类型,引用类型或数组类型,当然,最简单的还是成分为基本数据类型的数组,如例1中的X[ ]isPrime[ ]fib[ ]等,这些数组均可以进行排序。

---------------------- android培训java培训、期待与您交流! ----------------------

详细请查看:http://edu.youkuaiyun.com/heima


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值