2022Java学习笔记十一(java数组的概念、数组的定义,动态静态数组,数组的默认值)

一、什么是数组

数组就是用来存储一批同种类型数据的内存区域(盒子)

二、定义数组
1、静态初始化数组

定义数组的时候直接给数组赋值

格式

数据类型[] 数组名 = new 数据类型[]{数据1,数据2,...};
// 简化格式
数据类型[] 数组名 = {数据1,数据2,...};

2、数组属于引用数据类型,存储的数组在内存中的地址信息

package com.zcl.Array;

public class Demo {
    public static void main(String[] args) {
        // 目标:静态初始化数组
        int[] arr = {1,2,3,4,5}; // 简化
        int[] arr2 = new int[]{1,2,3,4,5};
        int age[] = {12,485,78};
        System.out.println("获取数组的内存地址:"+arr); // [I@6d311334 I:是数据类型
    }
}

3、数组的访问

数组有索引,根据【数组名称[索引]】就可以找到具体数组
数组有长度属性:length

package com.zcl.Array;

public class Demo {
    public static void main(String[] args) {
        // 目标:静态初始化数组
        int[] arr = {1,2,3,4,5}; // 简化
        int[] arr2 = new int[]{1,2,3,4,5};
        System.out.println("获取数组的内存地址:"+arr); // [I@6d311334 I:是数据类型

        System.out.println("---------数组的访问--------");
        System.out.println(arr[0]); // 1
        System.out.println(arr[1]); // 2
        System.out.println(arr[2]); // 3
        System.out.println("---------数组的赋值--------");
        // 赋值:数组名称[索引] = 数据
        arr[0]=100;
        System.out.println(arr[0]); // 100
        System.out.println("---------数组的长度--------");
        System.out.println(arr.length); // 5
        // 数组的最大索引:length-1【前提是长度大于0】
    }
}

4、数组的注意事项

  1. 什么类型的数据只能存放什么类型的数据
  2. 数据一但定义之后,类型和长度就是固定的
  3. 如果超出数组长度就会报错【索引越界】

5、动态初始化数组

定义数组的时候只确定元素的类型和长度,之后写入具体数据。

格式:

数据类型[] 数组名 = new 数据类型[长度];
数组名[索引] = 写入值;

当前已经知道存入的元素值,用静态初始化
当前还不清楚要存入哪些数据,用动态初始化

package com.zcl.Array;

public class Demo2 {
    public static void main(String[] args) {
        int age[] = new int[10]; // 确定动态数组的长度
        age[0] = 10;
        age[1] = 20;
        age[2] = 30;
        System.out.println(age[0]); // 10
        System.out.println(age[4]); // 默认值:0
        
        // double 默认值为:0.0
        // 字符串 默认值为:null
    }
}

6、动态初始化数组的默认值

  1. 整形数组的元素默认值为:0
  2. 字符数组的元素默认值为:0(强转之后看到)
  3. 浮点型数组元素默认值为:0.0
  4. 布尔类型的数组默认值为:false
  5. 引用类型的数组默认值为:null

动态和静态的区别
动态初始化:只指定数组的长度,后期赋值
静态初始化:开始就存入元素值
两种写法是独立的,不可混淆使用