20230323——java数组与二维数组的学习day03

01-数组介绍

介绍 : 是一种容器, 可以存储同种数据类型的多个值

同种数据类型 : 不要理解的太过于死板, 要结合隐式转换

同种数据类型 : 不要理解的太过于死板, 要结合隐式转换

02-数组的定义格式

数据类型[] 数组名;

注意事项 : 这种定义格式, 定义出来的, 只是数组类型的变量而已, 容器还没有被真正的创建

03-数组的静态初始化

初始化 : 在内存中, 为数组容器开辟空间, 并将数据存入空间的过程

int[] arr = new int[]{11,22,33,44,55};

打印数组名,看到数组的十六进制内存地址。[I@233ac41

@ : 分隔符

[ : 代表当前空间是数组类型, 几个中括号就是几维数组

I : 当前数组是int类型

233ac41 : 十六进制内存地址

04-数组的元素访问

索引介绍 : (角标, 下标) 数组中, 每一个空间所对应的编号, 编号从0开始逐个+1增长

05-数组的遍历操作

介绍 : 将数组中的 [每一个] 元素取出进行操作

场景 : 如果要实现的需求, 需要操作到数组中的每一个数据, 就需要遍历数组

package com.wanxi.test;
//一维数组,遍历所有元素
public class RunOneArray {
    public static void main(String[] args) {
        int[] array = {11, 22, 33, 44, 55, 66, 77};

        int length = array.length;

        for (int i = 0; i < length; i++) {

            System.out.println(array[i]);

        }
    }

}

package com.wanxi.test;
//一维数组,所有元素的偶数和
public class SumEvenOneArray {


    public static void main(String[] args) {

        int[] array = {11, 22, 33, 44, 55, 66, 77};
        int sum = 0;
        int length = array.length;

        for (int i = 0; i < length; i++) {

            if (array[i] % 2 == 0) {
                sum += array[i];
            }

        }
        System.out.println(sum);

    }

}
package com.wanxi.test;
//一维数组的最大值
public class MaxOneArray {
    public static void main(String[] args) {

        int[] array = {11, 22, 33, 44, 55, 66, 77};

        int length = array.length;
        int max = array[0];


        for (int i = 1; i < length; i++) {

            max = max > array[i] ? max : array[i];

        }

        System.out.println(max);


    }
}
package com.wanxi.test;
//一维数组,随机产生的数据的最大值
import java.util.Random;

public class RandomOneArray {

    public static void main(String[] args) {
        int[] array = new int[7];
        Random random = new Random();
        int length = array.length;
        int max = 0;

        for (int i = 0; i < length; i++) {
            array[i] = random.nextInt(100) + 1;
        }

        for (int i = 0; i < length; i++) {
            max = max > array[i] ? max : array[i];
        }
        System.out.println("最大的数是: " + max);


    }
}
package com.wanxi.test;

import java.util.Scanner;
//一维数组,键入数据的最大值
public class ScannerOneArray {
    public static void main(String[] args) {
        int[] array = new int[7];
        int length = array.length;
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入7个数据");

        for (int i = 0; i < length; i++) {
            System.out.print("第" + (i + 1) + "个数据是: ");
            array[i] = scanner.nextInt();
        }
        int max = 0;

        for (int i = 0; i < length; i++) {
            max = max > array[i] ? max : array[i];
        }

        System.out.println("最大的数据是:" + max);

        scanner.close();

    }
}

06-数组的动态初始化

介绍 : 在创建数组的时候, 只需要指定长度, 系统就会分配默认初始化值

格式 : 数据类型[] 数组名 = new 数据类型[长度];

整数 : 0

小数 : 0.0

布尔 : false

字符 : '\u0000' ---> Unicode字符 ---> 常见的体现是空白字符

引用数据类型 : null

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

两种初始化的对比 :

区别 :

1. 动态初始化 : 手动指定长度, 系统分配默认值

2. 静态初始化 : 手动指定元素, 由系统计算出数组的长度

07-数组的内存图

  • 务必打开 ppt 将内存图梳理清楚

  • 提醒 : 如果内存不清楚, 后期遇到复杂案例, 思维跟不上 !!!

08-数组的常见问题

  • 数组索引越界异常 : ArrayIndexOutOfBoundsException :

  • 原因 : 访问了不存在的索引

  • 空指针异常 : NullPointerException :

  • 原因 : 当引用数据类型的变量, 记录到null之后, 代表跟堆内存的链接被切断了

  • 这时候还要去访问堆内存的数据, 就会出现空指针异常

09-二维数组介绍

  • 介绍 : 二维数组也是一个容器, 容器中存储的都是一维数组

  • 场景 : 发现要操作的数组, 有多个, 这多个数组也属于一个整体

10-二维数组静态初始化

数据类型[][] 数组名 = new 数据类型[][] {

{一维数组1},

{一维数组2}

};

11-二维数组的遍历操作

思路 :

  • 遍历二维数组, 获取到每一个一维数组

  • 继续遍历一维数组, 获取具体的元素

package com.wanxi.test;
//二维数组,遍历所有元素
public class RunTwoArray {
    public static void main(String[] args) {
        int[][] array = {{4, 5, 6, 7}, {114, 55, 33, 74, 52}, {11, 2, 54, 14}, {12, 36, 10}};
        int length = array.length;

        for (int i = 0; i < length; i++) {

            for (int j = 0; j < array[i].length; j++) {

                System.out.print(array[i][j] + " ");

            }
            System.out.println();

        }

    }

}
package com.wanxi.test;
//二维数组,输入的所有元素的和

import java.util.Scanner;

public class ScannerTwoArray {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int[][] array = new int[2][3];
        int length = array.length;
        System.out.println("请输入数据");
        int sum = 0;

        for (int i = 0; i < length; i++) {

            for (int j = 0; j < array[i].length; j++) {
                System.out.print("请输入第" + (i + 1) + "组的第" + (j + 1) + "个数据: ");
                array[i][j] = scanner.nextInt();
            }

        }

        for (int i = 0; i < length; i++) {

            for (int j = 0; j < array[i].length; j++) {
                sum += array[i][j];

                System.out.print(array[i][j] + " ");
            }
            System.out.println();

        }
        System.out.println("输入数据的和为: " + sum);

        scanner.close();
    }
}
package com.wanxi.test;
//二维数组,所有元素的和
public class SumTwoArray {
    public static void main(String[] args) {
        int[][] array = {{4, 5, 6, 7}, {1, 2, 5, 1}, {2, 6, 10}};
        int length = array.length;
        int sum = 0;

        for (int i = 0; i < length; i++) {

            for (int j = 0; j < array[i].length; j++) {

                sum += array[i][j];

            }

        }

        System.out.println("和为: " + sum);

    }
}

12-二维数组动态初始化

  • 格式 :

数据类型[][] 数组名 = new 数据类型[m][n];

m : 指定这个二维数组, 可以存储多少个一维数组

n : 指定每一个一维数组中, 可以存储多少个元素

13-二维数组内存图

  • 打开 ppt 梳理清楚 (以后用的少)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值