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. 二维数组可以是规则的也可以是不规则的
相关文章
|
2天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1080 0
|
11天前
|
人工智能 运维 安全
|
10天前
|
人工智能 测试技术 API
智能体(AI Agent)搭建全攻略:从概念到实践的终极指南
在人工智能浪潮中,智能体(AI Agent)正成为变革性技术。它们具备自主决策、环境感知、任务执行等能力,广泛应用于日常任务与商业流程。本文详解智能体概念、架构及七步搭建指南,助你打造专属智能体,迎接智能自动化新时代。
|
2天前
|
弹性计算 Kubernetes jenkins
如何在 ECS/EKS 集群中有效使用 Jenkins
本文探讨了如何将 Jenkins 与 AWS ECS 和 EKS 集群集成,以构建高效、灵活且具备自动扩缩容能力的 CI/CD 流水线,提升软件交付效率并优化资源成本。
267 0
|
9天前
|
人工智能 异构计算
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
|
10天前
|
机器学习/深度学习 人工智能 自然语言处理
B站开源IndexTTS2,用极致表现力颠覆听觉体验
在语音合成技术不断演进的背景下,早期版本的IndexTTS虽然在多场景应用中展现出良好的表现,但在情感表达的细腻度与时长控制的精准性方面仍存在提升空间。为了解决这些问题,并进一步推动零样本语音合成在实际场景中的落地能力,B站语音团队对模型架构与训练策略进行了深度优化,推出了全新一代语音合成模型——IndexTTS2 。
763 23
|
2天前
|
缓存 供应链 监控
VVIC seller_search 排行榜搜索接口深度分析及 Python 实现
VVIC搜款网seller_search接口提供服装批发市场的商品及商家排行榜数据,涵盖热销榜、销量排名、类目趋势等,支持多维度筛选与数据分析,助力选品决策、竞品分析与市场预测,为服装供应链提供有力数据支撑。
|
2天前
|
缓存 监控 API
Amazon item_review 商品评论接口深度分析及 Python 实现
亚马逊商品评论接口(item_review)可获取用户评分、评论内容及时间等数据,支持多维度筛选与分页调用,结合Python实现情感分析、关键词提取与可视化,助力竞品分析、产品优化与市场决策。