JAVA基础_day06

简介: 本笔记系统讲解Java一维及二维数组的定义、创建、遍历、内存存储机制与常见操作,涵盖数组特点、越界异常、复制排序等核心知识点,助你扎实掌握数组基础与应用。

Java数组与二维数组学习笔记

一、一维数组

1. 数组的定义和创建

// 方式一:先声明后分配空间
int[] arr1;           // 声明数组
arr1 = new int[5];    // 分配内存空间

// 方式二:声明同时分配空间
int[] arr2 = new int[5];

// 方式三:声明同时初始化
int[] arr3 = {
   1, 2, 3, 4, 5};
int[] arr4 = new int[]{
   1, 2, 3, 4, 5};

2. 数组的访问

  • 通过索引访问:arr[index]
  • 索引从0开始,最大索引为length-1
  • 获取数组长度:arr.length

3. 数组的遍历

// 使用for循环遍历
for(int i = 0; i < arr.length; i++) {
   
    System.out.println(arr[i]);
}

// 使用增强for循环(For-Each)
for(int element : arr) {
   
    System.out.println(element);
}

4. 数组的特点

  • 数组是引用数据类型
  • 数组在内存中是连续存储的
  • 数组长度固定不变
  • 数组元素类型必须一致

二、二维数组

1. 二维数组的定义和创建

// 方式一:规则二维数组
int[][] arr1 = new int[3][4];  // 3行4列

// 方式二:不规则二维数组
int[][] arr2 = new int[3][];   // 3行,列数未确定
arr2[0] = new int[2];          // 第1行2列
arr2[1] = new int[3];          // 第2行3列
arr2[2] = new int[4];          // 第3行4列

// 方式三:直接初始化
int[][] arr3 = {
   {
   1,2},{
   3,4,5},{
   6,7,8,9}};

2. 二维数组的访问

  • 通过双重索引访问:arr[row][column]
  • 获取行数:arr.length
  • 获取某行的列数:arr[row].length

3. 二维数组的遍历

// 使用嵌套for循环遍历
for(int i = 0; i < arr.length; i++) {
   
    for(int j = 0; j < arr[i].length; j++) {
   
        System.out.print(arr[i][j] + " ");
    }
    System.out.println();
}

// 使用增强for循环遍历
for(int[] row : arr) {
   
    for(int element : row) {
   
        System.out.print(element + " ");
    }
    System.out.println();
}

三、数组在内存中的存储

1. 一维数组内存分析

  • 数组变量存储在栈内存中,保存堆内存地址
  • 数组元素存储在堆内存中
  • 数组名实际是数组对象的引用

2. 二维数组内存分析

  • 二维数组在内存中是"数组的数组"
  • 外层数组存储的是内层一维数组的引用地址
  • 内层每个一维数组在堆内存中独立存储

四、常见数组操作

1. 数组复制

// System.arraycopy()
int[] src = {
   1, 2, 3, 4, 5};
int[] dest = new int[5];
System.arraycopy(src, 0, dest, 0, 5);

// Arrays.copyOf()
import java.util.Arrays;
int[] newArray = Arrays.copyOf(src, src.length);

2. 数组排序

import java.util.Arrays;

int[] arr = {
   5, 2, 8, 1, 9};
Arrays.sort(arr);  // 升序排序

五、注意事项

  1. 创建数组时必须指定长度
  2. 数组元素有默认值(整数为0,浮点数为0.0,布尔值为false,引用类型为null)
  3. 二维数组可以是规则的也可以是不规则的
相关文章
|
3月前
|
存储 安全 Linux
Kali Linux 2025.3 发布 (Vagrant & Nexmon) - 领先的渗透测试发行版
Kali Linux 2025.3 发布 (Vagrant & Nexmon) - 领先的渗透测试发行版
579 0
|
3月前
|
数据采集 存储 人工智能
拆解AI-Agentforce企业级智能体中台:如何让企业AI落地从“噱头”到“实效”
在GDMS峰会上,迈富时集团尹思源指出41.3%中国企业尚未布局AI Agent,已应用者亦陷“Demo化、孤岛化”困局。其发布的AI-Agentforce智能体中台,以“冰山模型”重构架构,打通认知、价值、能力三重鸿沟,覆盖内容、获客、销售、陪练、分析五大场景,助力企业实现AI从“工具”到“数字员工”的全链路协同升级。
|
3月前
|
消息中间件 缓存 JavaScript
如何开发ERP(离散制造-MTO)系统中的生产管理板块(附架构图+流程图+代码参考)
本文详解离散制造MTO模式下的ERP生产管理模块,涵盖核心问题、系统架构、关键流程、开发技巧及数据库设计,助力企业打通计划与执行“最后一公里”,提升交付率、降低库存与浪费。
|
3月前
|
人工智能 自然语言处理 测试技术
有没有可能不微调也能让大模型准确完成指定任务?(少样本学习)
对于我这种正在从0到1构建AI产品的一人公司来说,Few Shots学习的最大价值在于:用最少的资源获得最大的效果。我不需要大量的标注数据,不需要复杂的模型训练,只需要精心设计几个示例,就能让大模型快速理解我的业务场景。
301 43
|
3月前
|
安全 Unix 物联网
Windows 7 & Windows Server 2008 R2 简体中文版下载 (2025 年 9 月更新)
Windows 7 & Windows Server 2008 R2 简体中文版下载 (2025 年 9 月更新)
365 2
|
3月前
|
安全 物联网 API
Windows 11 24H2 中文版、英文版 (x64、ARM64) 下载 (2025 年 9 月更新)
Windows 11 24H2 中文版、英文版 (x64、ARM64) 下载 (2025 年 9 月更新)
596 1
Windows 11 24H2 中文版、英文版 (x64、ARM64) 下载 (2025 年 9 月更新)
|
3月前
|
机器学习/深度学习 人工智能 算法
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic带你深入卷积神经网络(CNN)核心技术,从生物启发到数学原理,详解ResNet、注意力机制与模型优化,探索视觉智能的演进之路。
427 11
|
4月前
|
人工智能 弹性计算 自然语言处理
云速搭 AI 助理发布:对话式生成可部署的阿里云架构图
阿里云云速搭 CADT(Cloud Architect Design Tools)推出智能化升级——云小搭,一款基于大模型的 AI 云架构助手,致力于让每一位用户都能“动动嘴”就完成专业级云架构设计。
648 31
|
3月前
|
安全 前端开发 Java
Spring Security
Spring Security 是Java应用安全的基石,提供认证、授权等全方位防护。支持表单、OAuth2、JWT等多种认证方式,基于过滤器链实现精细控制,适配单体、前后端分离及微服务架构,是构建企业级安全体系的首选框架。