概念:数组是相同类型的变量按顺序组成的一种复合数据类型(数组是一些类型相同的变量组成的集合),称这些相同类型的变量为数组的元素或单元。数组通过数组名加索引来使用数组的元素。

1. 声明数组

  1. 一维数组:
    数组元素类型 数组名[];
    数组元素类型 []数组名;
  2. 二维数组:
    数组元素类型 数组名[] [];
    数组元素类型 [] []数组名;
public class Hello {

    public static void main(String[] args) {
        int a[];
        int []b;
        double c[][];
        double [][]d;
    }

}


  1. 数组类型相同时也可以这样 (两种声明方法)
1. public static void main(String[] args) {
        int a[],b[]; //声明一维数组a和b
        double c[][],d[][];//声明二维数组c和d
        
        int []boy,girl;//一维数组boy和girl
        boy=new int[4];//为数组分配元素,不懂下面有解释
        girl=new int[4];
        
        double [][]one,two;//二维数组one和two
        one=new double[2][2];
        two=new double[2][2];
    }

}
  1. 注:与c/c++不同,Java不能在声明数组时在方括号内指定数组元素个数 int [23];或int [23]; 不允许,编译也不会通过

2. 为数组分配元素

  1. 上面声明数组仅仅给出了数组变量的名字和元素的数据类型。要想使用还得给数组分配元素
    格式:
    数组名=new 数组元素的类型[数组元素的个数];
    例如:
int []boy,;//声明一维数组boy
        boy=new int[4];/*为数组分配元素,数组获得4个用来存放int类型数据的变量,即4个int型元素。*/
        boy[0]=10;//给值10,下同
        boy[1]=11;
        boy[2]=12;
        boy[3]=13;

数组变量boy中存放着这些元素的首地址,该地址称作数组的引用,这样数组就可以通过索引使用分配给他的变量,即操作它的元素。

数组属于引用型变量,数组变量中存放着数组的首元素的地址,通过数组变量的名字加索引使用数组的元素。

示意图:

  1. 声明数组和创建数组可以一起完成,二维也一样 float boy[]=new float[4];
1. float boy[][]=new float[4][3];
  1. java 采用“数组的数组“声明多维数组,一个二维数组是若干个一维数组构成的,例如,4中boy就是由4个长度为3的的一维数组
1. boy[0],boy[1],boy[2],boy[3]构成的。 public class Hello {

    public static void main(String[] args) {
        int a[][]=new int[4][3];
        float b[]=new float[4];
        System.out.println(a.length);//打印出a的长度
        System.out.println(b.length);

    }

}
结果:
4
4
  1. 和c不同,Java可以使用int型变量的值指定数组的元素个数。 int size=30;
3. double a[]=new double[size];

3.数组元素使用

  1. 一维数组通过索引符访问自己的元素,如上面boy[0],boy[1]等。索引从零开始,数组有5(n)个元素,索引到4(n-1)为止。二维同样
public class Hello {

    public static void main(String[] args) {
        int a[][]= {{},{},{1,2,3},{},{}};
        float b[]= {1,2,3,4,5};
        System.out.println(a.length);//译为一个花括号为一个长度
        System.out.println(b.length);
        System.out.println(a[2][2]);//译为第三个花括号,第三个值
        System.out.println(b[0]);//第一个值
    }

}
结果:
5
5
3
  1. 1.0//因为数组b为float型所以为1.0

4. length的使用

public class Hello {

    public static void main(String[] args) {
        int a[][]=new int[4][3];
        float b[]=new float[4];
        System.out.println(a.length);//打印出a的长度
        System.out.println(b.length);

    }

}
结果:
4
4

结论:二维和一维都一样

5.数组初始化

直接赋值

public class Hello {

    public static void main(String[] args) {
        int a[][]= {{0,1},{3,4}};
        float b[]= {1,2};// 创建的时候就可以给值
        System.out.println(a[0][0]);
        System.out.println(b[0]+" "+b[1]);
    }

}
结果:
0
1.0 2.0

上面数组等价于:(先创建,再复制)

public class Hello {

    public static void main(String[] args) {
        int a[][]= new int[2][2];
        float b[]= new float[2];
        a[0][0]=0;
        a[0][1]=1;
        a[1][0]=3;
        a[1][1]=4;
        b[0]=1;
        b[1]=2;
        System.out.println(a[0][0]);
        System.out.println(b[0]+" "+b[1]);
    }

}
结果:
0
1.0 2.0

注意:不可以声明这样赋值:

int a[] []=new int[2] [2];
a[] []={{1,2}{0,1}};

6.数组的引用

  1. 两个相同类型的数组如果具有相同的引用,他们就有完全相同的元素
public class Hello1 {

    public static void main(String[] args) {
        int a[]= {1,2,3,4};
        int b[]= {100,200,300};
        System.out.println("数组a的个数为:"+a.length);
        System.out.println("数组b的个数为:"+b.length);
        System.out.println("数组a的引用:"+a);
        System.out.println("数组b的引用:"+b);
        a=b;
        System.out.println("数组a的个数为:"+a.length);
        System.out.println("数组b的个数为:"+b.length);
        System.out.println("a[0]="+a[0]+",a[1]="+a[1]+",a[2]="+a[2]);
        System.out.println("b[0]="+b[0]+",b[1]="+b[1]+",b[2]="+b[2]);
    }

}
结果:
数组a的个数为:4
数组b的个数为:3
数组a的引用:[I@2ff4acd0
数组b的引用:[I@54bedef2
数组a的个数为:3
数组b的个数为:3
a[0]=100,a[1]=200,a[2]=300
b[0]=100,b[1]=200,b[2]=300
  1. char型数组使用System.out.println(a)不会输出引用,而是输出数组a的全部元素值
public class Hello2 {

    public static void main(String[] args) {
        char a[]= {'努','力','学','习'};
        System.out.println(a);
        System.out.println(" "+a);//输出引用正确方法
    }

}
结果:
努力学习
 [C@2ff4acd0