Java数组

来源:互联网 发布:淘宝信誉刷到皇冠 编辑:程序博客网 时间:2024/06/06 01:09

Java数组

Java数组简介

Java中即存在数组也存在容器(List,Map)等,Java数组与容器的比较主要从三个方面看:效率,类型,保存基本类型的能力。
1、效率方面看数组是随机存取数据最快的一种线性结构,容器则相对速度较低一些。
2、Java中的数组在保存对象时可以持有对象的具体类型,并且在编译期检查对象的类型。在泛型之前,其他容器在处理对象时是没有具体类型的(Java的擦除机制),全部视为Object类型。泛型之后容器同样可以拥有对象的基本类型。
3、对于保存基本类型的能力来说,数组毫无疑问是可以保存的,但是具体到容器在拥有泛型之后,同时结合Java的自动包装机制,容器同样可以持有基本类型(不过也不是严格意义上来说的)。

数组初始化及赋值

典型的数组初始化如下所示:其中数组标识符a是数组的一个引用,存放在栈中,指向放在堆中创建的一个真实对象(这个真实对象也可以是指向其他对象的引用)。
<span style="white-space:pre"></span>int[] a = new int[n];
数组初始化有几种典型的形式如下:
<span style="white-space:pre"></span>Object[] obj = new Object[n];   // 先声明后赋值 <span style="white-space:pre"></span>for(int i = 0; i  < n; i++){     <span style="white-space:pre"></span>     obj[i] = new Object();<span style="white-space:pre"></span>}
<span style="white-space:pre"></span>Object[]  obj = {new Object(),new Object()} // 声明的同时并赋值
<span style="white-space:pre"></span>Object[] obj1;    // 先声明后赋值<span style="white-space:pre"></span>obj1 = obj
(这里需要强调一点,对象数组保存对象的引用,基本类型数组直接保存数组的值,对象数组在初始化时引用自动赋值为null,基本类型数组自动初始化为0,true等)

数组与泛型

数组与泛型是不相容的,主要的原因是数组需要知道它所持有的确切类型强制保证类型安全,而泛型中的擦除特性会移除所持有对象的类型信息。
0 0
原创粉丝点击