Java 入门(四) 数组 -------程序设计的工具对象 向面向对象过渡

http://hi.baidu.com/drmfslc5/blog/item/c41591c49079a6d0d000604a.html



数组 在程序设计中一直被当作是一个良好的数据组织工具。这里又说它是对象,是因为java中,数组是一个动态创建的对象,并不像八种基本类型一样在定义时就为其分配了固定的内存空间。 数组的类型可以是八种基本数据类型,也可以是引用类型,没有特定的名称去访问每一个数组元素,需要通过数组下标来进行。

          数组按维数分为一维数组,多维数组,其中二维数组是多维数组中运用比较多且广泛的。

        一维数组   是一种线性的组合

                         定义方式:datatype   arrayName[]; (保留了原C/C++程序设计的习惯方式)

                                           datatype[]   arrayName; (Java中新加并常用的数组定义方式,因为datatype[]看起来像是定义了某个数据类型的数组, arrayName看起像是操作数组的句柄)。

                                         如:Object   obj[];        Object[]   obj;

                         分配内存(实例化):Java中new关键字用来实例化类并为该对象分配内存空间。

                                         如:obj = new Object[10];

                         初始化方式:为数组分配内存后,数组中元素是什么,无法确定,需要为其填充相应的值。 一般为用下标选择性地填充 或是用循环语句遍历填充。for(int i=0;i<obj.length;i++){obj[i] = new Object();}

                         以上三个操作可以一步到位: double[] dou = {2.3,3.3,5.4,2.33} .用“{}”将“,”隔开的double值在声明时直接初始化数组,注意:这种方法只能在声明时使用。 以下的用法是错误的: float flo[]; flo = {1.7L,2.3L,4.5L};上面有一个length变量,是容器默认的public变量,表示容器中元素的个数。

           二维数组   相当于一种平面中点的组合,也可以理解为多行具有一些属性集的数据集,每行的属性值不同而已

                         定义方式:datatype   arrayName[][]; (保留了原C/C++程序设计的习惯方式)

                                           datatype[][]   arrayName; (Java中新加并常用的数组定义方式)。

                                         如:Object   obj[][];        Object[][]   obj;

                         分配内存(实例化):

                                         如:obj = new Object[10][20];

java中的多维数组还可以按维分别实例化,也就是说二维数组中每一行元素数不一定是相等的。如

                                                obj[0] = new Object[10];

                                                obj[1] = new Object[20];

                                                obj[3]= new Object[15];

                           将二维数组分配了4行,第一行10个元素空间,第二行20个元素,第三行无元素空间,第四行有15个元素空间

                         初始化方式:数组分配内存后,同样元素是什么无法确定,需要为其填充相应的值。 一般为用下标选择性地填充 或是用循环语句遍历填充。for(int i=0;i<obj.length;i++){obj[i] = new Object();}

                         一步到位: double[][] dou = {{2.3,3.3,},{5.4,2.33}} .用“{}”将“,”隔开的double值在声明时直接初始化数组。初始化一个二维数组2行,第一行三列,第二行两列。

               维数组 类似二维数组,只是维数多出,只需要注意写在前面的维数与写在后面维数的所属关系。

数组的操作         即对数组整体或是其中各元素的操作   拿一维数组来举例说明。其实就是在Arrays接口下的一些静态方法

               数组的复制:Arrays.copyOf(datatype[] a, int length) 返回一个datatype型的数组并且含有length个元素,未填充部分默认值为0,false,null

               数组的填充:Arrays.fill(datatype[] a,[int fromIndex,int toIndex,] datatype value);
      将数组a中的元素的值填充为value,默认为全部填充,写了下标的是控制填充元素的位置(不算toIdex)。

               数组的比较:Arrays.equals(datatype[] a,datatype[] b) 比较两个数组的填充内容,只有填充值及值所在下标 也就是说 填充内容 完全相同的情况下才返回true 否则返回false;

               数组的排序:Arrays.sort(datatype[] a,[int fromIndex,int toIndex]);将数组a 排序,如果有下标范围限定,则排序固定下标范围的元素(不算toIdex)。

               数组的二分查找:需要先用排序sort()方法将数组排序 Arrays.binarySearch(datatype[] a,[int fromIndex,int toIndex,]datatype key) 二分查找 在数组a中查找key值的下标并返回,可以在所选下标范围(不算toIndex)内查找。找不到返回个负值


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值