今日战果:数组


一、数组(array)【重点】


1.1 数组介绍

数组是什么?
  • 数据组合,相当于是容器,存放多个数据的
为什么需要数组?
  • 变量只能存储一个数据,不能储存多个相同类型的数据
  • 例如: 存储全班人的成绩,存储每个人的多个手机号
  • 所以需要数组,一次性存多个相同类型的数据
数组的特性
  • 数组一旦创建,长度固定(容量,尺寸)
  • 数组只能存储同一种类型
  • 数组对象没有方法,只有一个属性length可以获得长度

1.2 数组的语法

数组的声明
  • 数据类型[] 数组名;
  • int[] arr; 声明一个整型数组,数组名arr
  • double[] arr2;
  • String[] arr3;
数组的创建
  • 数组名 = new 数据类型[长度]
    • 指定长度创建数组,默认值是空的
  • 数组名 = new 数据类型[]{数据1,数据2,…}
    • 指定数据,但是不知道长度

1.3 创建数组的内存图

  • 方法执行进栈,执行完弹栈消失
  • 凡是new出来的对象,都会在堆中
    • 在堆中要开辟连续空间,根据数组长度划分
    • 产生地址值
    • 根据长度空间,给位置设置下标(索引),从0开始
    • 数组中出现默认值
      • 整型默认值是0
      • 浮点型是0.0
      • boolean默认值是false
      • char默认值是 ’ ’
      • 引用类型默认值都是 null
    • 最后将地址值赋值给变量(引用)

1.4 取值赋值内存图

在这里插入图片描述

练习

需求: 创建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]+"分" );
    }

}

二、数组属性

数组有一个属性,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]);
        }
    }

四、练习

1.设计整型数组,要求计算出数组中所有数字的和

 // 1设计整型数组,要求计算出数组中所有数字的和
    public static void printSum() {
        int[] arr = {11, 22, 33, 44, 55, 66};
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        System.out.println("sum = " + sum);
    }

2.设计整型数组,要求计算出数组中所有数字的平均数

 // 2设计整型数组,要求计算出数组中所有数字的平均数
    public static void printAvg(){
        int[] arr = {11, 22, 33, 44, 55, 66};
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        double  avg = sum * 1.0 / arr.length;
        System.out.println("avg = " + avg);
    }

3.设计整型数组,输出数组中的最大值

	public static int getMax(){
        int[] arr = {1,211,3,41,5,787};
        int max = arr[0];
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] > max) {
                max = arr[i];
            }
        }
        return max;
    }

五、二维数组

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


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


最后

如果感觉有收获的话,点个赞 👍🏻 吧。
❤️❤️❤️本人菜鸟修行期,如有错误,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍在这里插入图片描述

  • 18
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值