当前位置: 首页 > news >正文

Java零基础入门Day4:数组与二维数组详解

一、为什么需要数组?

当程序需要处理批量同类型数据时,使用多个变量存储会非常繁琐。例如存储70个学生姓名时,需定义70个变量,而数组可以简化这一过程,提高代码可维护性。

示例:变量存储的弊端

String name1 = "张誉";
String name2 = "刘疏桐";
// ... 定义70个变量
String name70 = "陈侃";

二、一维数组

1. 数组的定义与初始化

  • 静态初始化:定义时直接赋值

    // 完整格式
    String[] names = new String[]{"张三", "李四", "王五", "赵六", "孙七", "周八", "吴九"};
    // 简化格式
    int[] scores = {85, 90, 78, 92, 88};
  • 动态初始化:先定义长度,后赋值

    double[] javaScores = new double[8]; // 定义长度为8的数组
    javaScores[0] = 89.5; // 后续逐个赋值

2. 数组的访问与遍历

  • 访问元素:通过索引(从0开始)

    System.out.println(names[0]); // 输出:张三
    names[1] = "田启峰"; // 修改元素
  • 遍历数组

    for (int i = 0; i < names.length; i++) {System.out.println(names[i]);
    }

3. 常见应用案例

案例1:随机点名

String[] names = {"张三", "李四", "王五", "赵六", "孙七", "周八", "吴九"};
int index = (int) (Math.random() * names.length);
System.out.println(names[index] + "出来回答问题!");

案例2:统计成绩(最高分、最低分、平均分)

double[] scores = {85, 90, 78, 92, 88};
double max = scores[0], min = scores[0], sum = 0;for (double score : scores) {if (score > max) max = score;if (score < min) min = score;sum += score;
}
double avg = sum / scores.length;System.out.println("最高分:" + max);
System.out.println("最低分:" + min);
System.out.println("平均分:" + avg);

三、二维数组

1. 定义与初始化

  • 静态初始化

    String[][] seats = {{"张无忌", "赵敏", "周芷若"},{"张三丰", "宋远桥", "殷梨亭"},{"灭绝", "陈昆", "玄冥二老", "金毛狮王"},{"杨逍", "纪晓芙"}
    };
  • 动态初始化

    int[][] matrix = new int[3][5]; // 3行5列的二维数组

2. 访问与遍历

  • 访问元素

    System.out.println(seats[0][1]); // 输出:赵敏
    seats[2][2] = "谢逊"; // 修改元素
  • 遍历二维数组

    for (int i = 0; i < seats.length; i++) {for (int j = 0; j < seats[i].length; j++) {System.out.print(seats[i][j] + "\t");}System.out.println();
    }

3. 应用案例:斗地主洗牌

// 初始化54张牌
String[] colors = {"♠", "♥", "♣", "♦"};
String[] numbers = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};
String[] poker = new String[54];
int index = 0;for (String number : numbers) {for (String color : colors) {poker[index++] = color + number;}
}
poker[52] = "小王";
poker[53] = "大王";// 洗牌:随机交换元素
Random rand = new Random();
for (int i = 0; i < poker.length; i++) {int swapIndex = rand.nextInt(poker.length);String temp = poker[i];poker[i] = poker[swapIndex];poker[swapIndex] = temp;
}

四、总结

  • 数组是存储同类型数据的容器,可显著简化批量数据操作。

  • 一维数组通过索引访问,二维数组可表示表格或矩阵结构。

  • 实际开发中,数组常用于游戏、数据处理、算法等领域。

 

相关文章:

  • 主机Windows和虚拟机ubuntu和开发板三者互ping学习记录
  • Python高级爬虫之JS逆向+安卓逆向1.7节: 面向对象
  • 裁剪+渲染队列+透明与混合
  • CPU:AMD的线程撕裂者(Threadripper)和霄龙(EPYC)的区别
  • 构建更快,部署更智能:立即优化您的 Docker 设置
  • 每天学一个 Linux 命令(34):wc
  • 组件通信-provide、inject
  • whl文件名后缀
  • 传奇各职业/战士/法师/道士/戒指爆率及出处产出地/圣战/法神/天尊/虹魔/魔血/麻痹/超负载/求婚/隐身/传送/复活/护身/祈祷/火焰
  • PyQt 或 PySide6 进行 GUI 开发文档与教程
  • 电商平台的订单状态设计流程
  • NHANES指标推荐:TyG指数
  • 计算机启动流程中,都干了啥事。比如文件挂在,操作系统加载,中断向量表加载,磁盘初始化在哪阶段。
  • K8S - 深入解析 Service 与 Ingress - 服务暴露与流量管理
  • 在多socket多核计算机上配置MPI和OpenMP
  • Protubuf入门 --- 01基本语法与编译使用
  • C语言数据类型与内存布局
  • 算法竞赛进阶指南.巡逻
  • 13分区排烟 无法远程启动 12-1-4,排烟管道出口未连接室外
  • Linux-07-Shell
  • 国内多景区实行一票游多日:从门票经济向多元化“链式经济”转型
  • 陈芋汐世界杯总决赛卫冕夺冠,全红婵无缘三大赛“全满贯”
  • 安徽两位新任地级市政府党组书记亮相
  • 刘洪洁已任六安市委副书记、市政府党组书记
  • Meta一季度净利增长三成:上调全年资本支出,受关税影响亚洲出口电商广告支出减少
  • 原国家有色金属工业局副局长黄春萼逝世,享年86岁