数组

来源:互联网 发布:北京移动网络优化 出差 编辑:程序博客网 时间:2024/06/01 16:55

  真是的,总结数据类型怎么能把数组给忘了呢!数组是编程语言中最常见的一种数据结构,它可以用于存储多个数据,一个数据被称为数组元素,通常可以通过数组元素的索引来访问数组元素,包括元素数组元素赋值和取出数组元素的数据。显然,不可能是基本数据类型,所以,数组是引用数据类型。哎呀,分类也是一个问题,归到数据结构还是按数据类型划到java基础里呢?算了,整理完再说……

         java数组要求所有数组元素具有相同的数据类型。一旦数组的初始化完成,数组在内存中所占的空间将被固定下来,因此数组的长度将不可改变。即使把某个数组元素的数据清空,但它所占的空间依然保存,依然属于该数组,数组的长度依然不变。我们一般用“type[] arrayName”的形式来定义一个数组,要特别注意的是定义一个引用变量时只是定义了一个指针,这个引用变量还未指向任何有效的内存,因此不能定义数组时不能指定数组的长度。当然,这个定义的数组也不能使用,只有对数组进行初始化后才能使用。所谓初始化,即使为数组元素分配内存空间,并且为每个数组元素赋初始值。  数组的初始化有两种形式:

         静态初始化:初试化时由程序员显式指定每个数组元素的初始值,有系统决定数组长度;如:intArr=new int[]{1,1,1}(简化:intArr={1,1,1})当然,数组的定义和初始化可以同时完成。

         动态初试:初始化时程序员只指定数组长度,由系统为数组分配初试值。如:int[] paces=new int[5]; (初始化一个长度为5的int数组)。动态初始化时系统按如下规则分配初始值:

            byte、short、int和long类型--->0;

            float/double------------------------>0.0;

            char----------------------------------->'\u0000';

           boolean------------------------------->false;

           类、接口、数组---------------------->null.

         我们在访问数组时如果指定的数组索引小于0或者大于数组长度,编译程序时不会出现任何错误,但是运行时出现异常:java.long.ArrayIndexOutBoundsException。jdk1.5之后,java提供更简单的循环:foreach循环(遍历数组和集合),可以自动遍历数组和集合的每一个元素。格式:

        //type是数组元素或集合元素的类型,variableNmae是形参名,collection就是数组名

          for  (type variableNmae:array | collection){

             //variableNmae自动迭代访问每一个元素……

         }

       拷贝数组的数据时,我们绝对不能直接用“=”赋值,这样我们队新数组进行操作时也会影响到原来的数组,因为它们指向的就是内存中的同一段地址。我们可以用System.arrayCope()方法,当然,也可以new一个新的数组实例,然后把数据一一装填进去。

        呵呵,真好,看到了数组在内存中的运载机制。老规矩,还是用一个图来解释一下吧: