• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
卡苏米
博客园    首页    新随笔    联系   管理    订阅  订阅

笔记总结五

总结笔记五

01-数组介绍

  • 概念 : 数组就是一种容器, 可以存储同种数据类型的多个值.

  • 场景 : 如果发现今后要操作的多个数据, 是同一组数据的话, 就可以考虑使用数组容器来进行维护

一班 : 100, 90, 100
二班 : 80, 100, 70
​
int[] arr1 = {100,90,100};   // 求和
int[] arr2 = {80,100,70}; // 求和

02-数组的定义格式

  • 数据类型[] 数组名;

int[] arr;
  • 数据类型 数组名[];

int arr[];
  • 注意 : 这种定义格式, 仅仅只是定义了数组类型的变量, 还没有真正的创建出容器.

03-数组的静态初始化

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

  • 完整格式 :

数据类型[] 数组名 = new 数据类型[]{元素1, 元素2, 元素3...};
​
int[] arr = new int[]{11,22,33};
  • 简化格式 :

数据类型[] 数组名 = {元素1, 元素2, 元素3...};
​
int[] arr = {11,22,33};
  • 细节 : 打印数组名的时候, 看到的不是数组元素, 而是数组的地址值.

[I@233ac6f

04-数组的元素访问

  • 格式 :

数组名[索引];
  • 索引(角标, 下标) : 数组容器中, 每一个位置所对应的编号, 编号从0开始逐个 + 1增长.

System.out.pritnln(arr[0]);
​
arr[0] = 11;
​
if(arr[0] % 2 == 0){
​
}
​
int sum = arr[0] + 100;

05-数组的遍历操作

  • 概念 : 将数组中每一个元素 [ 取出来 ] , 取出来之后可以打印, 求和, 判断...

  • 数组中的属性 : 数组名.length

    • 动态获取到数组中 [元素的个数 \ 数组的长度]

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

快捷键:  数组名.fori + 回车

06-数组的动态初始化

  • 概念 : 在创建数组的时候, 只指定数组的长度, 系统就会分配默认值

  • 格式 :

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

int[] arr = new int[3];
  • 默认值 :

    • 整数 :0

    • 小数 : 0.0

    • 布尔 : false

    • 字符 : '\u0000' ---- unicode字符 --- 空白字符

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

      • null

 

07-两种初始化的区别和使用场景

  • 区别 :

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

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

  • 场景 :

    • 静态初始化 : 如果要操作的数据, 已经非常明确了, 直接静态初始化

    需求: 计算出一班 : 100, 90, 100 学生的总成绩是多少
    
    int[] arr = {100,90,100};
    • 动态初始化 : 只明确要存储的元素个数, 不明确具体数值

    需求: 产生10个随机数, 并存入数组.
    
    Random r = new Ranomd();
    int[] arr = new int[10];
    
    for(int i = 0; i < arr.length; i++){
    	arr[i] = r.nextInt(100) + 1;
    }

     

08-数组的内存图

  • 要求 : 请打开ppt, 将内部的流程梳理清楚, 最好跟同桌交流一下.

    • 自己画一张

 

09-数组的常见问题

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

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

  • 空指针异常 : ( NullPointerException )

    • 原因 : 当一个引用数据类型的变量, 被赋值为null之后, 跟堆内存的指向就被切断了

      • 还想去访问堆内存数据, 就会出现空指针异常

       

10-二维数组的介绍

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

  • 场景 : 如果发现要操作的 [多组] 属于一个整体的话, 就可以考虑使用二维数组进行维护

    • 第一季度:22,66,44
      第二季度:77,33,88
      第三季度:25,45,65
      第四季度:11,66,99

11-二维数组的静态初始化

  • 完整格式 :

数据类型[][] 数组名 = new 数据类型[][]{
	  {元素1, 元素2, 元素3..},
	  {元素1, 元素2, 元素3..}
};

int[][] arr = new int[][]{
	{11,22,33},
	{44,55,66}
};
  • 简化格式 :

数据类型[][] 数组名 = {
	  {元素1, 元素2, 元素3..},
	  {元素1, 元素2, 元素3..}
};

int[][] arr = {
	{11,22,33},
	{44,55,66}
};
  • 结论 : 二维数组在存储一维数组的时候, 具体存的是一维数组的内存地址

System.out.println(arr[0]);  // [I@233ac56
System.out.println(arr[1]);  // [I@344ab77

想要访问元素 :

System.out.println(arr[1][2]);  // 66

12-二维数组的遍历操作

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

// 遍历二维数组, 获取每一个一维数组
for(int i = 0; i < arr.length; i++){
	// arr[i] : 每一个一维数组
	// 继续对每一个一维数组变量, 获取具体的元素.
	for(int j = 0; j < arr[i].length; j++){
		System.out.println(arr[i][j]);
	}
}

13-二维数组的动态初始化

  • 格式 :

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

m : 指定二维数组的长度
n : 指定一维数组的长度

int[][] arr = new int[2][3];

创建了一个二维数组, 数组名叫arr, 这个二维数组可以存储2个一维数组, 每一个一维数组可以存储3个元素.

14-二维数组的内存图

  • 要求 : 请打开ppt, 将内部的流程梳理清楚, 最好跟同桌交流一下.

15-二维数组练习 - 打乱二维数组 - 必掌握

package com.itheima.test;

import java.util.Random;

public class ArrayTest10 {
    /*
        需求:将一维数组
        int[] nums = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
        打乱后,存入二维数组中
     */
    public static void main(String[] args) {
        Random r = new Random();
        int[] nums = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
        // 打乱一维数组.
        for (int i = 0; i < nums.length; i++) {
            // i : 0 1 2 3...15
            // index : 随机索引
            int index = r.nextInt(nums.length);
            // nums[i]  nums[index]
            int temp = nums[i];
            nums[i] = nums[index];
            nums[index] = temp;
        }

        // 准备二维数组, 来存储打乱之后的元素.
        int[][] datas = new int[4][4];

        int index = 0;
        // 遍历二维数组, 填充元素
        for (int i = 0; i < datas.length; i++) {
            for (int j = 0; j < datas[i].length; j++) {
                // 差的就是一个变量, 变量最开始为0, 逐个+1
                datas[i][j] = nums[index];
                index++;
            }
        }

        // 遍历二维数组, 打印查看结果.
        for (int i = 0; i < datas.length; i++) {
            for (int j = 0; j < datas[i].length; j++) {
                System.out.print(datas[i][j] + "\t");
            }
            System.out.println();
        }

    }
}

 

posted @ 2021-07-19 23:02  卡苏米  阅读(59)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3