黑马程序员_Java中的数组

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

        数组是有序数据的集合,是由数目固定、相同类型的元素组成的,用一个统一的数组名和下标来唯一地确定数组中的元素。

        Java将数组作为对象来处理,数组是一种引用类型,从java.lang.Object继承而来,故Object类中的所有方法均可用。 


一、一维数组


        一维数组的声明:

        一位数组的格式声明如下:

        方式一:数据类型 数组名[];
       方式二:数据类型[] 数组名;


        例
        int array1[];
        double[] array2;

        这里只定义了数组变量,没有为数组元素分配空间,只为数组的引用分配了空间,array1和array2目前为空的引用。


        一维数组的初始化:

        数组经过初始化后,其长度就不可再改变。数组的初始化分为静态初始化和动态初始化两种:
(1) 静态初始化:在定义数组的同时对数组元素进行初始化

        例:
             int[] intArray={1,2,3,4}; // 定义了一个含有4个元素的int型数
注:

                ① 在给数组赋初值时,不能同时指定数组的大小,Java会根据初值的多少自动计算数组的大小;
② 静态初始化必须使用上述一条语句完成;
③ 当创建数组后,如果没有初始化,系统会根据数组的不同数据类型,指定不同的缺省值。 

        (2) 动态初始化:用运算符new为数组分配空间
             对于简单类型的数组,其格式如下:
             数据类型 数组名[]=new 数据类型[arraySize];
             数据类型[] 数组名=new 数据类型[arraySize];


     或先声明数组,再对数组进行初始化:
             数据类型[] 数组名;
             数组名=new 数据类型[arraySize];


            对于复合(引用)类型(类、接口、数组)的数组,需要经过以下两步进行内存空间的分配。
         为数组分配空间:数组名[]=new 数据类型[arraySize];
         ②为每一个数组元素分配所引用的对象空间:数组名[i]=new 数组元素对象的构造函数; 
            例:

            string stringArray[];  //定义一个String类型的数组
            stringArray = new String[3]; //分配3个引用空间,初始化每个引用值为null
            stringArray[0]=new String("how");
            stringArray[1]=new String("are");
            stringArray[2]=new String(“you”);


        一维数组元素的的引用:

        当数组初始化后就可通过数组名与下标来引用数组中的每一个元素。一维数组元素的引用格式如下:
        数组名[int类型的表达式]
        注:
        Java对数组元素的下标要进行越界检查,以保证访问的安全性。若数组下标越界,Java会抛出 java.lang.ArrayIndexOutOfBoundsException(数组下标越界)异常。
        ②length是属于数组对象的数据域而不是方法。因此,使用length()会出错,应使用数组名.length, 且只有在数组创建后才能访问。创建前,数组的引用是null。

        数组的复制:

        一个简单的赋值语句并不能完成数组复制工作,在Java中,可以使用赋值语句复制基本类型的变量却不能复制对象,如数组。
        将一个对象赋值给另一个对象,只会使两个对象指向相同的内存地址。 复制数组有以下三种方法:
(1) 用循环语句复制数组的每一个元素,如
               for(int i=0;i<sourceArray.length;i++)
                    targetArray[i]=sourceArray[i];
        (2) 使用Object的clone方法,如:
                int[] targetArray = (int[])sourceArray.clone();
        (3) 使用System类中的静态方法arraycopy,arraycopy的语法如下:
              arraycopy(sourceArray,srcpos,targetArray,tarpos,length); 


二、多维数组:

        如果数组的元素类型也是数组,这种结构就是多维数组。可以为二维、三维等。
        最常用的二维数组的每个元素都是一个一维数组,又叫做数组的数组。表示矩阵或表格需要使用二维数组。


       二维数组的声明

       数据类型    数组名[][];         或        数据类型[][]     数组名;
       例:
       int arr[][];        或         int[][] arr;


       二维数组的初始化:

        二维数组的初始化也分为静态初始化和动态初始化两种。
        (1) 静态初始化:在定义数组的同时为数组分配空间,例如:
              int[][] intArray={{1,2},{2,3},{3,4}};
        (2) 动态初始化:对高维数组来说,动态分配内存空间有下面两种方法:
             ① 直接为每一维分配空间,格式如下: 
            数据类型[][] 数组名=new数据类型[数组长度][];
            或
            数据类型 数组名[][]=new 数据类型[数组长度][数组长度];
    例::
int[][] intArray1=new int[4][];
int[][] intArray2=new int[4][3]; 
    注:不能在没指定二维数组唱的的情况下直接指定二维数组内每一个一维数组的长度

    例:

            int[][] arr=new int[][4];  // 错误


            ② 从最高维开始(而且必须从最高维开始),分别为每一维分配空间。第2维的每一个数组的长度可以不同,是一个不规则的二维数组。例如:
                String s[ ][ ]=new String[2][ ];
               s[0]=new String[2];
               s[1]=new String[3];
               s[0][0]=new String("Good");
               s[0][1]=new String(" Luck");
              s[1][0]=new String(" to");
              s[1][1]=new String(" you");
              s[1][2]=new String("!"); 


        二维数组的引用:

        对二维数组中的每个元素,引用方式为:
数组名[index1][index2]
二维数组也有length属性,可以求每一维数组的长度。


 





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值