/**
 * @author WanJl
 * @version 1.0
 * @title Demo09
 * @description java引用数据类型
 * @create 2026/7/15
 */
public class Demo09 {
    /*
        Java中的数据类型分为两类：
            基本数据类型
            引用数据类型
                |- 类 所有使用class修饰的，都是类
                |- 数组 是一种用来存储多个数据的容器
           数组是用来存储多个相同类型的值的容器。
           数组的特点：
            1、是连续存储，数组中的每个值，称为数组的元素，所有元素都是存储在连续的内存空间中，通过索引值来访问。
            2、Java数组有一个属性：length 表示数组的长度
            3、数组创建的时候必须要指定数组的类型，数组里面要存什么类型的元素。
            4、数组中只能存储同一种类型的元素。
            5、数组的长度一旦确定，就不能改变
            6、数组的索引值（下标）从0开始，对应第一个元素，到 length-1 为止，对应最后一个元素
           定义数组的格式：
            数据类型 [] 数组名(变量名);
     */
    public static void main(String[] args) {
        //数据类型 [] 数组名(变量名);
        //声明数组变量
        int[] a;    //这是一个int类型的数组变量，为它赋值的地址对应的数组必须是整数类型
        //对数组变量进行初始化赋值
        //【动态初始化】赋值，格式： 数组变量名=new 数组类型[数组长度];
        a=new int[10];
        System.out.println(a);  //输出a，就会输出 这个数组在堆内存中的地址值
        /*
            比如地址值： [I@b4c966a
                [   表示这是一个一维数组
                I   表示这是一个int类型的数组
                @   分隔符
                b4c966a 是这个数组在堆内存中的地址值
         */
        // 所谓的动态初始化，就是先定义了数组的长度，并且为数组的空间每个元素都赋值初始值。
        // 初始值 就是 数组类型的默认值，比如整数默认值：0、小数默认值：0.0、char类型的默认值 是空字符 \u0000、布尔类型的默认值是 false
        //我们可以直接声明数组并且进行动态初始化赋值
        int[] arr=new int[10];
        //粗暴的理解：动态初始化就是 程序员负责定义数组长度，计算机负责为数组元素赋值。

        /*
            为数组中的某个元素赋值--格式：
            数组名[索引值]=变量(字面量);
         */
        arr[0]=1;
        int x=15;
        arr[1]=x;
        //访问(使用/输出)数组元素：
        // 数组名[索引值]
        System.out.println(arr[0]); //第一个元素，被赋值为1 ，所以输出就是1
        System.out.println(arr[1]);//第二个也一样
        System.out.println(arr[2]); //第三个元素因为没有赋值，所以输出就是0

        //我们可以使用循环来快速的遍历整个数组的所有元素
        // 数组名.length 就可以获取这个数组的长度
        for (int i = 0; i < arr.length; i++) {
            //数组名[索引值]
            System.out.println(arr[i]);
        }
        //
        /*
            【静态初始化】
            数组数据类型[] 数组名=new 数组数据类型[]{数组元素1,数组元素2,....,数组元素n};
            静态初始化是程序员负责为数组元素赋值，计算机负责计算数组的长度。
            简写方式：
            数组数据类型[] 数组名={数组元素1,数组元素2,....,数组元素n};
         */
        //数组数据类型[] 数组名=new 数组数据类型[]{数组元素1,数组元素2,....,数组元素n};
        int[] arr1=new int[]{1,3,5,7,9,6,2,4};
        //简写方式：数组数据类型[] 数组名={数组元素1,数组元素2,....,数组元素n};
        int[] arr2={1,3,5,7,9,6,2,4};   //这种是最常用的方式

        /*
            注意：
                访问数组元素使用的是 数组名[索引值]
                但是注意索引值 必须是0~长度-1之间，否则会出现异常 数组下标索引异常
         */
    }
}
