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

JavaSE -- 数组详细讲解(数组介绍,Arrays常用方法,二维数组创建)

数组

简介

数组是引用数据类型,是一种容器。是一组相同类型数据的组合,将这一组数据做统一管理。

  • 栈内存中只存有数组的引用(地址)

  • 数组中的变量类型如果是基本数据类型(int,double),则基本类型元素值直接存在堆内存的数组对象内部

  • 如果是引用数据类型(String),则这些引用类型的地址(引用)存储在堆内存的数组对象内部。而这些引用数据单独存储在堆内存的其他位置,数组中的地址指向他们。

数组声明

数组创建出来后会在堆内存中开辟一块连续的空间地址

  • 数组静态创建
int[] x = new int[]{1, 2, 3}; // 方式一
double y = {1.2, 1.3, 1.4}; //方式二
  • 数组动态创建
int[] x = new int[10];

Arrays方法

  • Arrays.sort(x[]): 基于快速排序实现排序,默认升序排序

  • Arrays.sort(x[],st,ed): 部分排序,只将数组 x[] 下标在 [st, ed) 中的元素进行排序

  • Arrays.toString(x[]) :将数组 x[] 转为字符串 “[1,2,3]”

  • Arrays.fill(x[], num) :将数组 x[] 中所有元素用数字 num 进行填充替换

  • Arrays.fill(x[], st, ed, num): 将数组 x[] 中下标范围 [st, ed) 内的元素用 num 进行填充替换

  • Arrays.binarySearch(x[], num) : 用二分在数组中找到值为 num 的下标,如果没有找到就返回一个负数

  • int[] y = Arrays.copyOf(x, size): 先创建大小为 size 的数组,然后将数组 x[] 中前 min(x.length(),size):的数复制过去,并返回,可用于实现数组自动扩容

  • int[] y = Arrays.copyOfRange(x, 1, 3): 将数组 x[] 中的下标为 [1, 3) 的元素复制给 y[] 数组

  • Arrays.equals(x[], y[]): 比较数组 x[] 和 y[] 是否相同,比较的数组内元素是完全相同

  • Arrays.compare(x[], y[]) :比较数组 x[] 和 y[] 的大小(按字典序,下标从小到大依次比较),(x == y)返回 0(x < y) 返回负数,(x > y) 正数

二维数组

不同于C语言的二维数组,Java中的二维数组, 模拟形态不一定是一个矩形,也就是第二维数组大小可以不相同

静态创建
int[][] a = {{1, 2},{1, 2, 3}};
int[][] b = new int[][]{{1, 2}, {1, 2, 3}};
动态创建

此时第二维还没有被初始化,然而在 Java 当中第一维其实是一个数据类型是数组的数组,当没有赋值时,默认是null, 当访问 a[1][0] 会产生空指针异常

int[][] a = new int[3][];
初始化
  • 方式一
int[][] a = {{1, 2},{1, 2, 3}};
int[][] b = new int[][]{{1, 2}, {1, 2, 3}};
  • 方式二
int[][] a = new int[3][];
int arr1 = {1, 2, 3};
int arr2 = {1, 2};
int arr3 = {1};
a[0] = arr1;
a[1] = arr2;
a[2] = arr3;
http://www.dtcms.com/a/287007.html

相关文章:

  • Redis学习其三(订阅发布,主从复制,哨兵模式)
  • 优迅股份IPO隐忧:毛利水平“两连降”,研发费用率不及行业均值
  • decltype是什么,什么作用?
  • 【c++】指针的另一大用途:限制实参必须是变量
  • Fish Speech:开源多语言语音合成的革命性突破
  • Nestjs框架: 基于TypeORM的多租户功能集成和优化
  • LeetCode1047删除字符串中的所有相邻重复项
  • wsl 安装 nvm
  • [QOI] qoi_desc | qoi_encode | qoi_decode
  • 高防IP能够防御CC攻击吗?它具备哪些显著优势?
  • 服务管理智能化:R²AIN SUITE 升级带来的两大功能更新哪些值得关注?
  • T5(Text-to-Text Transfer Transformer) 模型
  • 20250718-5-Kubernetes 调度-Pod对象:重启策略+健康检查_笔记
  • 【Spring WebFlux】什么是响应式编程
  • 前缀和 HASH
  • proxy_cache缓存系统
  • 期刊论文-图片格式要求
  • UNet改进(23):如何用SLCAM模块提升UNet的分割性能
  • Google Gemini CLI 配置简要指南
  • 大模型驱动的超短期功率预测算法封装方案
  • SymAgent(神经符号自学习Agent)
  • PowerBi实现Top N和Bottom N的简单示例
  • 番茄项目1:定了一个新的目标——做一个番茄工作法的web项目!
  • 光伏财务管理:在阳光与资本的精密计算中前行
  • VSCode - VSCode 快速跳转标签页
  • Web攻防-访问控制篇水平越权垂直越权未授权访问级别架构项目插件SRC复盘
  • pytest + requests 接口自动化测试框架
  • [特殊字符] Spring Boot 常用注解全解析:20 个高频注解 + 使用场景实例
  • Anime.js 超级炫酷的网页动画库之SVG路径动画
  • 双指针(滑动窗口)相关算法题