【Java SE 基础学习打卡】33 数组的概述

目录

  • 前言
  • [一、先懂数组:从生活场景看懂 "数组的本质"](#一、先懂数组:从生活场景看懂 “数组的本质”)
    • [1.1 生活化类比(秒懂核心)](#1.1 生活化类比(秒懂核心))
    • [1.2 编程里的数组定义](#1.2 编程里的数组定义)
    • [1.3 直观理解 "连续内存"](#1.3 直观理解 “连续内存”)
  • 二、数组的核心作用:批量管理同类型数据,简化操作
    • [2.1 批量存储,减少变量定义](#2.1 批量存储,减少变量定义)
    • [2.2 统一管理,方便遍历 / 计算](#2.2 统一管理,方便遍历 / 计算)
    • [2.3 快速访问,效率更高](#2.3 快速访问,效率更高)
  • 三、数组的核心特征
    • [3.1 特征 1:长度固定(一旦创建,无法修改)](#3.1 特征 1:长度固定(一旦创建,无法修改))
    • [3.2 特征 2:元素类型一致(不能混装)](#3.2 特征 2:元素类型一致(不能混装))
    • [3.3 特征 3:有序性(索引唯一,从 0 开始)](#3.3 特征 3:有序性(索引唯一,从 0 开始))
  • [四、新手易混点:数组 vs 单个变量(对比表)](#四、新手易混点:数组 vs 单个变量(对比表))
  • 五、简单示例:数组的声明(新手先看,后续详解创建)
  • 总结

前言

之前咱们学方法时,处理数据都是 "单个来"------ 比如计算两个数的和、判断一个数是否为偶数。但实际编程中,经常要处理 "一堆同类型的数据":比如记录一个班级 50 个学生的数学成绩、存储超市 100 种商品的价格、统计一周 7 天的气温。

如果还像之前那样,给每个成绩定义一个变量(score1、score2、...、score50),不仅写起来麻烦,后续想计算平均分、找最高分也会特别繁琐。这时候 "数组" 就能解决这个痛点:它就像一个 "统一规格的收纳盒",能把同类型的数据整齐地装在一起,方便批量管理和操作。

一、先懂数组:从生活场景看懂 "数组的本质"

1.1 生活化类比(秒懂核心)

先看 3 个生活里的 "数组场景",对应理解数组的本质:

生活场景 对应数组概念 核心匹配点
班级成绩表(按学号排序,只记数学分数) 整型数组 数据类型一致(都是分数 / 整数)、有序(按学号排)、连续存放(表格一行到底)
超市商品价格清单(按货架号排序,只记价格) 浮点型数组 类型一致(都是价格 / 小数)、有序(货架号对应位置)、连续(清单一页写完)
一周 7 天的气温记录(按周一到周日排序) 浮点型数组 长度固定(7 天)、类型一致(都是气温 / 小数)、有序(按日期)

1.2 编程里的数组定义

数组是相同数据类型元素的有序集合 ,这些元素在内存中占用连续的存储空间,可以通过 "位置编号(索引)" 快速找到对应的元素。拆解开核心关键词:

  • 相同数据类型:数组里只能装 "同一种类型" 的数据,比如全是 int、全是 double,不能混着装(比如既装分数又装学生姓名);

  • 有序集合:元素有固定的顺序,每个元素对应唯一的 "位置编号";

  • 连续内存存储:数组的元素在内存里是 "挨在一起" 的,就像书架上一排连续的格子,没有空隙。

1.3 直观理解 "连续内存"

用书架类比内存:

  • 数组就像一个有 8 个格子的书架(长度 8),每个格子只能放 "数学课本"(类型一致);

  • 格子从左到右按 "0、1、2、...、7" 编号(数组索引从 0 开始,新手先记这个规则);

  • 格子之间没有空隙(连续内存),不能在格子 2 和 3 之间空出一格;

  • 想拿第 3 本课本,直接找编号 2 的格子就行(通过索引快速访问)。

二、数组的核心作用:批量管理同类型数据,简化操作

数组的存在,就是为了解决 "单个变量管理大量同类型数据" 的痛点,核心作用有 3 个:

2.1 批量存储,减少变量定义

不用为每个数据单独定义变量:

  • 无数组:定义 50 个变量score1score50存储 50 个成绩,代码冗长且难维护;

  • 有数组:只需要定义一个数组int[] scores = new int[50],就能装下 50 个成绩,代码简洁。

2.2 统一管理,方便遍历 / 计算

数组的有序性和连续存储,让我们能通过循环快速遍历所有元素:

  • 比如计算 50 个成绩的平均分:用 for 循环遍历数组,逐个累加成绩,再除以 50 即可;

  • 比如找最高分:遍历数组,逐个比较元素大小,记录最大值。

2.3 快速访问,效率更高

通过 "索引" 可以直接访问任意位置的元素,不用逐个查找:

  • 想查第 10 个学生的成绩:直接取scores[9](索引从 0 开始),一步到位;

  • 想修改第 5 个学生的成绩:直接赋值scores[4] = 95,无需其他操作。

三、数组的核心特征

数组的 3 个核心特征是理解和使用数组的基础,每个特征都对应明确的 "使用规则",新手要逐个吃透:

3.1 特征 1:长度固定(一旦创建,无法修改)

数组的长度(能装的元素个数)在创建时就确定了,后续不能增加或减少,就像书架的格子数一旦做好就不能改。

  • 例子:创建一个长度为 5 的数组int[] nums = new int[5],最多只能装 5 个 int 类型元素,想装第 6 个会报错;

  • 新手避坑:不要试图 "扩容" 数组,比如想给长度 5 的数组装 6 个元素,会抛出ArrayIndexOutOfBoundsException(数组索引越界,后续会详细讲);

  • 补充:如果后续需要动态增减元素,Java 有其他容器(比如 ArrayList),但新手先掌握基础数组。

3.2 特征 2:元素类型一致(不能混装)

数组在定义时必须指定数据类型,所有元素都必须是该类型,不能混合存放不同类型的数据。

  • 正例:int[] scores 只能装 int 类型的成绩(90、85、95);

  • 反例:不能在int[] scores里装字符串 "张三"、小数 85.5,编译直接报错;

  • 特殊情况:Object[]数组可以装不同类型(后续学面向对象再讲),新手阶段先关注基本类型数组。

3.3 特征 3:有序性(索引唯一,从 0 开始)

数组的每个元素都有唯一的 "索引(下标)",索引从 0 开始,依次递增,通过索引能精准定位元素。

  • 例子:长度为 5 的数组,索引是 0、1、2、3、4(不是 1-5!新手最容易错);

  • 对应关系:索引 0 → 第 1 个元素,索引 1 → 第 2 个元素,...,索引 n-1 → 第 n 个元素;

  • 生活化类比:书架格子编号从 0 开始,0 号格是第 1 个位置,4 号格是第 5 个位置。

四、新手易混点:数组 vs 单个变量(对比表)

新手刚开始容易分不清数组和单个变量的区别,用表格对比更清晰:

特性 单个变量 数组
存储数据量 只能存 1 个值 能存多个同类型值(长度固定)
访问方式 直接用变量名(比如score 用 "数组名 + 索引"(比如scores[0]
内存占用 单个内存单元 连续的多个内存单元
适用场景 存储单个数据(比如一个学生的年龄) 存储批量同类型数据(比如全班学生的年龄)

五、简单示例:数组的声明(新手先看,后续详解创建)

数组的完整使用后续会讲,这里先给出最简单的声明方式,让新手有直观认识:

java 复制代码
public class ArrayOverview {
    public static void main(String[] args) {
        // 声明一个能装5个int类型成绩的数组(仅声明,后续讲初始化)
        int[] scores;

        // 声明并初始化一个装3个成绩的数组(直接赋值)
        int[] mathScores = {90, 85, 95};

        // 访问数组元素:通过索引
        System.out.println("第1个学生的数学成绩:" + mathScores[0]); // 输出90
        System.out.println("第3个学生的数学成绩:" + mathScores[2]); // 输出95
    }
}

执行结果:

java 复制代码
第1个学生的数学成绩:90
第3个学生的数学成绩:95

提示:这里只是简单的声明和访问,数组的创建、初始化、遍历等细节,下一节会详细讲。

总结

这一节咱们掌握了数组的核心概述,记住 3 个核心点:

  1. 数组本质:相同数据类型元素的有序集合,占用连续内存空间;

  2. 核心作用:批量存储同类型数据,简化遍历、计算等操作;

  3. 核心特征:长度固定、类型一致、索引从 0 开始的有序性。

数组是 Java 处理批量数据的基础,掌握它的核心特征,后续学习数组的创建、遍历、操作就会事半功倍。

相关推荐
编程火箭车1 天前
【Java SE 基础学习打卡】32 方法的嵌套调用与递归调用
java se·java 基础·java 方法·方法嵌套调用·方法递归调用·递归终止条件·递归应用场景
编程火箭车2 天前
【Java SE 基础学习打卡】31 方法的返回值与void关键字
java se·java 基础·return 语句·编程小白入门·java 方法·方法返回值·void 关键字
编程火箭车4 天前
【Java SE 基础学习打卡】28 方法的定义与调用
java se·参数传递·返回值·java 基础·新手避坑·java 方法·方法定义与调用
编程火箭车17 天前
【Java SE 基础学习打卡】27 方法的概述
编程语法·java se·代码复用·编程小白入门·方法概述·功能模块化·java 方法
编程火箭车1 个月前
【Java SE 基础学习打卡】24 循环结构 - while
java·编程基础·循环结构·while循环·java se·do-while循环·避免死循环
编程火箭车1 个月前
【Java SE 基础学习打卡】23 分支语句 - switch
编程语法·java se·switch 语句·新手避坑·java 分支结构·编程小白入门·等值判断
BillKu4 个月前
Java核心概念详解:JVM、JRE、JDK、Java SE、Java EE (Jakarta EE)
java·jvm·jdk·java ee·jre·java se·jakarta ee
叶 落7 个月前
[Java 基础]正则表达式
java·正则表达式·java 基础
叶 落7 个月前
[Java 基础]数组
java·java 基础