数组

1 数组定义

    数组(Array),是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。 
 

2 数组本质

数组本身是引用数据类型,而数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型。创建数组对象会在内存中开辟一整块连续的空间,而数组名中引用的是这块连续空间的首地址。
 

3 数组特点  

     数组的长度固定,不可更改,使用length属性进行查找。
     我们可以直接通过下标(或索引)的方式调用指定位置的元素,速度很快。

4 一维数组

    一维数组的声明方式:type var[] 或 type[] var
    一般使用 type[] var   //这是Java中的方法
    静态初始化 :  type[] var = { value1, value2, value3 };  //声明和赋值必须在一行,否则报错。   
    静态初始化2: type[] var = new type[]{ value1, value2, value3 }; //静态初始化,但是声明和赋值可以不在一行。区别于上一个静态初始化。
    动态初始化  : type[] var = new type[num];   
                            //动态初始化,声明和赋值可以不在一行,初始化数组的长度为num,基本数字数据类型赋值为0,char类型赋值为unicode编码为0的字符                                                        //boolean赋值为false,引用数据类型赋值为null。
 
    无论静态初始化还是动态初始化,一旦初始化完成,数组的长度就确定了。
 

5 二维数组

    二维数组的声明方式:type var[][] 或 type[][] var
    静态初始化 :  type[][] var = { {value1,value2},{ value3, value4 }};  //声明和赋值必须在一行,否则报错。
    静态初始化2: type[] var = new type[]{ {value1,value2},{ value3, value4 }}; //静态初始化,但是声明和赋值可以不在一行。区别于上一个静态初始化。
    动态初始化: type[][] var = new type[num][];  // 表示有num个一维数组  //没有初始化内层一维数组。故而不能访问内层元素,因为数组是引用类型,故而var[n]为null
    动态初始化2: type[][] var = new type[num1][num2]; //表示有num1个一维数组且每个一维数组的长度为num2
 
    var[0]  -> 二维数组的外层元素是 地址值 ,如果是第一种动态初始化直接访问则为null。
    var[0][0]  -> 二维数组的内层元素是实际值,如果是第一种动态初始化直接访问报错,如果是第二中动态初始化,则和一维数组的一样。0/false/null
 
 

6 数组伴随类

    Arrays
    static List asList()
    static int binarySearch(number[] nums, number key);
    static T[] copyOf(T[] original, int newLength) 截取说拓宽数组,取新长度
    static T[] copyOfRange(T[] t,int from,int to) 截取从指定索引到指定索引
    static String deepToString(T[] t) 多维数组转字符串
    static String toString(T[] t) 一维数组转字符串
    static boolean equals(T[] t1,T[] t2) 判断2者是否相同
    static T[] sort(T[] t)

7 数组常见异常

    

    ArrayIndexOutOfBoundsException    数组下标越界异常

    NullPointerException  空指针异常

        1.数组对象没有初始化就调用
        2.二维数组声明,没有给内层的数组定义,就调用
        3.数组对象为null时,调用了数组对象自身的方法
posted @ 2020-03-30 17:53  linglongfang  阅读(115)  评论(0)    收藏  举报