【Java基础】数组

一、数组(array)【重点】

  • 基本数据类型: 四类八种

  • 引用数据类型: 数组,类,接口

1.1 数组介绍

数组是什么?

  • 数据组合,相当于是容器,存放多个数据的

为什么需要数组?

  • 之前变量就是存储数据,只不过变量只能存储一个数据

  • 例如: 存储全班人的成绩,存储每个人的多个手机号

  • 所以数据数组,一次性存多个数据

数组有特性:

  • 数组一旦创建,长度固定(容量,尺寸)

  • 数组只能存储同一种类型

  • 数组对象没有方法,只有一个属性length可以获得长度

1.2 数组的语法

数组的声明

  • 数据类型[] 数组名;

  • int[] arr; 声明一个整型数组,数组名arr

  • double[] arr2;

  • String[] arr3;

数组的创建

  • 数组名 = new 数据类型[长度];

    • 指定长度创建数组,默认值是空的

  • 数组名 = new 数据类型[]{数据1,数据2,...}

    • 指定数据,但是不知道长度

数组的使用

  • 数组取值

  • 数组存值

演示

public static void main(String[] args) {
        int[] arr;        // 声明整型数组
        arr = new int[3];        // 创建长度为3的数组
        double[] arr2 = new double[3];
        System.out.println("arr2 = " + arr2);
​
    }

1.3 创建数组的内存图

  • 方法执行进栈,执行完弹栈消失

  • 凡是new出来的对象,都会在堆中

    • 在堆中要开辟连续空间,根据数组长度划分

    • 产生地址值

    • 根据长度空间,给位置设置下标(索引),从0开始

    • 数组中出现默认值

      • 整型默认值是0

      • 浮点型是0.0

      • boolean默认值是false

      • char默认值是 ' '

      • 引用类型默认值都是 null

    • 最后将地址值赋值给变量(引用)

image-20240521102128721

1.4 数组使用

数组是存储多个数据,使用方式非常简单,只能

  • 向数组存储数据

  • 从数组中取出数据

取值

double[] arr2 = new double[3];
        
        System.out.println("arr2 = " + arr2);
        System.out.println(arr[0] );
        System.out.println(arr[1] );
        System.out.println(arr[2] );
        double d1 = arr2[0];
        double d2 = arr2[1];
        double d3 = arr2[2];
        System.out.println("d1 = " + d1);
        System.out.println("d2 = " + d2);
        System.out.println("d3 = " + d3);
​
        // 声明创建字符串数组,长度4,取出所有数据,打印
        String[] arr3 = new String[4];
        String s1 = arr3[0];
        System.out.println(s1 );
        System.out.println(arr3[1] );
        System.out.println(arr3[3] );
​
        // 数组取值时,下标不要越界,否则报错ArrayIndexOutOfBoundsException

赋值

 public static void main(String[] args) {
        // 声明 创建
        double[] arr = new double[3];
        // 第一次取值)默认值)
        System.out.println(arr[0] );//0.0
        System.out.println(arr[1] );//0.0
        System.out.println(arr[2] );//0.0
        arr[0] = 1.1;
        arr[1] = 2.2;
        arr[2] = 3.3;
        // 再次取值
        System.out.println(arr[0] );//1.1
        System.out.println(arr[1] );//2.2
        System.out.println(arr[2] );//3.3
    }

注意事项: 数组操作是下标不要越界,最大下标是长度-1,最小是0

1.5 取值赋值内存图

image-20240521110632971

1.6 练习

需求: 创建3个数组

整数数组存储3个人的年龄

字符串数组存储3个人姓名

小数数组存储3个人成绩

分别创建,存值,取值

public class Demo3 {
​
    public static void main(String[] args) {
        int[] ageArr = new int[3];
        ageArr[0] = 18;
        ageArr[1] = 19;
        ageArr[2] = 20;
​
        String[] nameArr = new String[3];
        nameArr[0] = "李白";
        nameArr[1] = "钟馗";
        nameArr[2] = "亚瑟";
​
        double[] scoreArr = new double[3];
        scoreArr[0] = 4.5;
        scoreArr[1] = 3.5;
        scoreArr[2] = 2.5;
​
        System.out.println("姓名:"+nameArr[0]+",年龄:"+ageArr[0]+",操作:"+scoreArr[0]+"分" );
        System.out.println("姓名:"+nameArr[1]+",年龄:"+ageArr[1]+",操作:"+scoreArr[1]+"分" );
        System.out.println("姓名:"+nameArr[2]+",年龄:"+ageArr[2]+",操作:"+scoreArr[2]+"分" );
    }
​
}

1.7 另一种创建数组的方式

public class Demo4 {
​
    public static void main(String[] args) {
        // 指定长度,不指定数据,数据后续再动态赋值
        int[] arr = new int[3];
​
        // 创建数组时,直接给定数据,不给长度
        int[] arr2 = new int[]{11, 22, 33, 44, 55};
        System.out.println(arr2[0]);
        System.out.println(arr2[1]);
        System.out.println(arr2[2]);
        System.out.println(arr2[3]);
        System.out.println(arr2[4]);
​
        // 以上方式,简化成
        String[] arr3 = {"A", "B", "C"};
        double[] arr4 = {1.1, 2.2, 3.3};
​
        System.out.println(arr3[0]);
        System.out.println(arr4[0]);
    }
}

后续也可以继续修改数组中的数据....

二、数组属性

数组有一个属性,length,可以数组的长度(容量)

double[] arr4 = {1.1, 2.2, 3.3, 3.3, 3.3, 3.3, 3.3, 3.3, 3.3};
int length = arr4.length;
System.out.println("arr4数组的长度:" + length );

三、遍历【重点】

遍历: 将数组中的元素挨个(一个一个)的取出

public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 5, 6};
        
        // 遍历 输出
        for (int i = 0;i < arr.length;i++) {
            System.out.println(arr[i]);
        }
}

四、数组在方法中应用

4.1 数组当做方法的参数

public static void main(String[] args) {
        int[] arr = {11,22,33,44};
        printArr(arr);
    }

    
public static void printArr(int[] arr){
        String s = "[";
        for (int i = 0; i < arr.length; i++) {
           s += arr[i];
           if (i != arr.length - 1) {
               s += ",";
           } else {
               s += "]";
           }
        }
        System.out.println(s );
}

4.2 数组当返回值

public static void main(String[] args) {
        double[] arr = test();
        System.out.println(arr[0] );
}
public static double[] test() {
        double[] arr = {1.1,2.2,3.3};
        return arr;
}

五、二维数组

二维数组,就是元素是一维数组的数组,即数组中有数组的的数组

public class Demo6 {

    public static void main(String[] args) {
        /**
         * 二维数组
         * 数据类型[][] 数组名 = new 数据类型[长度1][长度2];
         * 长度1: 二维数组长度
         * 长度2: 其中每个一维数组的长度
         */
        int[][] arr = new int[3][4];
        // 创建了整型二维数组,总长是2,即其中有个2个一维数组
        // 其中每个一维数组长度是3
        System.out.println(arr );// 二维数组地址值
        System.out.println(arr[0] );// 其中第一个一维数组地址值
        System.out.println(arr[0][0] );// 取出第一个一维数组的第一个值

        System.out.println("--------" );

        // 外层循环遍历二维数组
        for (int i = 0; i < arr.length; i++) {
            // 内层循环遍历一维数组
            for (int j = 0; j < arr[i].length; j++) {
                System.out.print(arr[i][j]+" ");
            }
            System.out.println( );
        }

        System.out.println("-------------------" );
        int[][] arr2 = {
                {1,2,3},
                {4,5,6,7},
                {8,9,10,11,12}
        };
        for (int i = 0; i < arr2.length; i++) {
            // 内层循环遍历一维数组
            for (int j = 0; j < arr2[i].length; j++) {
                System.out.print(arr2[i][j]+" ");
            }
            System.out.println( );
        }
    }

}

image-20240521170946129

七、总结

重点是数组的基本使用

  • 声明,创建(2种),取值,存值

  • 遍历

  • 内存图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值