java学习笔记------数组

时间:2023-02-24 12:34:11

  • 概念

                               In the Java programming language,arrays are objects(§4.3.1) ,are dynamically creaeted,and may be assigned to variables of type Object (§4.3.2). .All method of class Object may be invoked on an array.                               即数组是一个对象,它拥有Object类中的方法。
    • 验证:

              char[] ch=new char[5];              System.out.println(ch.getClass());              System.out.println(ch.getClass().getSuperclass());/*Output*class [C*class java.lang.Object*说明数组是一个类[C对象,同时基类为Object*/

  • 定义及初始化

    • 定义        

              int[] a1;//定义”一个int型数组引用“,现在只是为该引用分配了足够的存储空间,但没给数组对象本身分配任何空间。              //System.out.println(a1.toString());//编译错误,原因没有初始化。在JAVA,除了类成员变量会自动初始化(数组类型初始化为0,布尔型为false,引用为null),局部变量不初始化不能直接使用,否则编译器报错。              //int[2] a2;//定义数组的时候不允许指定数组的大小,否则编译错误
    • 初始化

              int[] a1={1,2,3,4};//初始化方法1              int[] a2=new int[4];//初始化方法2,它的元素值为该元素类型的默认值(数字类型为0,布尔类型为false,引用类型为null)              Father[] f=new Father[5];//这是运用了初始化方法2,它的元素值均为null,即都为空引用              //f[0].a=1;//直接使用空引用,运行时产生NullPointerException异常              for(Father x:f)//需要对数组中的引用进行初始化              {                     x=new Father();              }                           int[] a3=a1;//初始化方法3,复制了一个引用,注意此时a3和a1指向对一个数组对象              
    • PS:故此一般定义和初始化是一起使用


  • 常用的方法和变量

    • length:数组的长度

              int[] a1={1,2,3,4};              System.out.println(a1.length);//输出数组a1的长度4              //a1[4]++;//运行时,java会检查数组下标,一旦越界,就会抛出ArrayIndexOutOfBoundsException异常。
    • toString()和Arrays.toString():前者属于Object类的方法

   //Object.toString()    public String toString() {       return getClass().getName() + "@" + Integer.toHexString(hashCode());   }               int[] a1={1,2,3,4};              System.out.println(a1.toString());              System.out.println(Arrays.toString(a1));              /*Output:               *[I@7852e922               *[1, 2, 3, 4]               */             
    • clone():复制数组

              int[] a1={1,2,3,4};              int[] a3=a1;//这种复制方法,使得a3和a1指向同一个对象              int[] a4=a1.clone();//使用clone方法复制,a4和a1不指向同一个对象              System.out.println(a1==a3);//true              System.out.println(a1==a4);//false