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

Java入门知识总结——章节(二)

在这里插入图片描述
在这里插入图片描述

ps:本章主要讲数组、二维数组、变量


一、数组

数组是一个数据容器,可用来存储一批同类型的数据
请添加图片描述

🔑:注意

类也可以是一个类的数组

public class Main {
    public static class Student {
        String name;
        int age;  // 移除 unsigned
        int id;

        // 构造方法
        public Student(String name, int age, int id) {
            this.name = name;
            this.age = age;
            this.id = id;
        }

        // 重写 toString 方法
        @Override
        public String toString() {
            return "Student{name='" + name + "', age=" + age + ", id=" + id + "}";
        }
    }

    public static void main(String[] args) {
        // 正确初始化 Student 数组
        Student[] s1 = new Student[]{
            new Student("张无忌", 18, 1),
            new Student("赵敏", 20, 2)
        };
        System.out.println(s1[0].toString());
        System.out.println(s1[1].toString());
    }
}

二、二维数组

请添加图片描述

二维数组的初始化

1. 指定行、列大小的动态初始化

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

  • 这里创建了一个有 3 行、每行 5 列的整型二维数组。
  • 所有元素会被初始化为默认值(整型默认为 0)。

2. 静态初始化(直接用大括号赋值)

2.1 不使用 new 关键字

int[][] arr = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };

  • 这种方式可以在声明时直接赋初值。
  • 每一行(内部的花括号)可以视为一维数组。
2.2 使用 new 关键字 + 大括号

int[][] arr = new int[][] { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };

  • 和上一种方式本质相同,带 new 关键字时需要 new int[][],再紧跟大括号初始化。
  • 这种方式在某些场景下更显式。

3. “行”大小固定,“列”大小可变(不规则数组)

int[][] arr = new int[3][]; arr[0] = new int[2]; // 第 1 行有 2 列 arr[1] = new int[4]; // 第 2 行有 4 列 arr[2] = new int[3]; // 第 3 行有 3 列

  • 这种初始化方式先确定“行数”(外层数组长度),然后再分别为每行分配不同大小的一维数组。
  • 最终就形成了所谓的“拉格数组(Ragged Array)”或“不规则数组”。

4. 同时使用动态与静态

其实这可以视作前面几种的组合:一部分行用动态方式初始化,一部分行用静态方式初始化。通常使用场景不多,但语法上是可行的。

示例:

java

复制编辑

int[][] arr = new int[2][]; arr[0] = new int[] {1, 2, 3}; arr[1] = new int[] {4, 5, 6, 7};

  • 第 1 行固定分配 {1, 2, 3}
  • 第 2 行固定分配 {4, 5, 6, 7}

二维数组的遍历

for(int i = 0; i < arr.length(); i++)
	for (int j = 0; j < arr[i].length(); j++)
	System.out.print(arr[i][j] + "\t");//制表符
System.out.println();
http://www.dtcms.com/a/98669.html

相关文章:

  • bluecode-20240913_1_数据解码
  • 【Kafka】分布式消息队列的核心奥秘
  • 3.29前端模拟面试
  • 【区块链安全 | 第八篇】多签机制及恶意多签
  • org.apache.maven.surefire:surefire-junit-platform:jar:2.22.2 Maven打包失败
  • 逗万DareWorks|创意重构书写美学,引领新潮无界的文创革命
  • 什么是贴源库
  • unique_ptr的详细介绍
  • 量子计算与项目管理:2025年颠覆性技术将如何重构任务分解逻辑?
  • 【商城实战(103)】商城实战终章:携手共进,迈向新程
  • AI日报 - 2025年03月29日
  • 团建--树+dfs
  • MySQL的基础语法2(函数-字符串函数、数值函数、日期函数和流程函数 )
  • Linux之数据链路层
  • Vue 类与样式
  • 【数学建模】(启发式算法)模拟退火算法:原理、实现与应用
  • [c++项目]基于微服务的聊天室服务端测试
  • 基于ssm的课程辅助教学平台(全套)
  • 直流电机类型及其控制技术
  • 免费下载 | 2025年网络安全报告
  • libimobiledevice项目中各个库的作用
  • 【数据结构】二叉树的递归
  • 前端音频和视频上传预览功能的探索与总结
  • Linux 基本使用和 web 程序部署
  • 人生感悟8
  • 【测试】每日3道面试题 3/29
  • Advanced Renamer:批量文件重命名工具
  • Vue3组件事件用户信息卡练习
  • SOA、ESB与微服务:架构演进与对比分析
  • 【大前端系列20】JavaScript核心:项目实战从零构建任务管理系统