前言

本文将介绍Java数组的创建与使用


数组的概念

数组是相同类型数据的有序集合

数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问他们

数组的初始化

动态初始化

//语法:
int[] arr = new int[3];
//可以拆分为两个步骤:
int[] arr;
arr = new int[3];

静态初始化

//语法:
int[] arr = new int[] {5,15,25};
//可以拆分为两个步骤:
int[] arr;
arr = new int[] {5,15,25};
//静态初始化时可以简化书写:
int[] arrayB = {5,15,25};

内存分析

arr.png

数组的特点

  • 长度是确定的。数组一旦被创建,它的大小就是不可以改变的

  • 其元素必须是相同类型,不允许出现混合类型

  • 数组中的元素可以是任何数据类型,包括基本类型和引用类型

  • 数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量

  • 数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的

  • 关于数组边界:
    ⠀⠀下标的合法区间为[0,length-1],如果越界就会出现异常
    ⠀⠀ArraryIndexOutOfBoundsException:数组下标越界异常

数组的使用

for-each循环

//适用于打印输出,不适合修改元素
for(声明语句 : 表达式){
    //代码句子
}
public class demo {
    public static void main(String[] args) {
        int [] numbers = {10, 20, 30, 40, 50};
        for(int x : numbers ){
            System.out.println(x);
        }
    }
}
//输出结果:
10
20
30
40
50

数组做方法参数

数组可以作为参数传递给方法

//示例:计算传入数组(整形)的和
public class demo {
    public static void sum(int[] array) {
        int s = 0;
        for (int i = 0; i < array.length; i++) {
            s = s + array[i];
        }
        System.out.println(s); //10
    }

    public static void main(String[] args) {
        sum(new int[]{1,2,3,4});
    }
}
//输出结果:
10

数组做返回值

//示例:实现数组翻转
public class demo {
    public static int[] reverse(int[] list) {
        int[] result = new int[list.length];
        for (int i = 0, j = result.length - 1; i < list.length; i++, j--) {
            result[j] = list[i];
        }
        return result;
    }

    public static void main(String[] args) {
        int[] result = reverse(new int[]{1,2,3,4});
        for(int x : result){
            System.out.println(x);
        }
    }
}
//输出结果:
4
3
2
1

多维数组

//示例:
public class demo {
    public static void main(String[] args) {
        int[][] arrays = new int[2][2]; //创建二维数组
        arrays[0][0] = 1;
        System.out.println(arrays[0][0]); //1
    }
}
//输出结果:
1