当前位置: 首页 > 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.lryc.cn/news/592953.html

相关文章:

  • CMake指令:常见内置命令行工具( CMake -E )
  • MyBatis-Flex代码生成
  • Google Gemini CLI 配置简要指南
  • 数字化转型:概念性名词浅谈(第三十一讲)
  • 前端-CSS盒模型、浮动、定位、布局
  • 张力场中的领航者:驾驭二元对立的“情境智慧”模型
  • Vue3 从 0 到 ∞:Composition API 的底层哲学、渲染管线与生态演进全景
  • C++---cout、cerr、clog
  • 上网行为管理-web认证服务
  • JavaScript 的垃圾回收机制
  • 20250718-5-Kubernetes 调度-Pod对象:重启策略+健康检查_笔记
  • Go-Redis 入门与实践从连接到可观测,一站式掌握 go-redis v9**
  • C++ :vector的介绍和使用
  • 快速安装GitLab指南
  • Selenium 攻略:从元素操作到 WebDriver 实战
  • 最小生成树算法详解
  • FastAdmin框架超级管理员密码重置与常规admin安全机制解析-卓伊凡|大东家
  • Android性能优化之包体积优化
  • 【DataWhale】快乐学习大模型 | 202507,Task03笔记
  • Spring全面讲解(无比详细)
  • MySQL中的锁有哪些
  • 高速板材的DK 与 DF
  • 门控线性单元GLU (Gated Linear Unit)
  • Zabbix安装-Server
  • 暑期自学嵌入式——Day05补充(C语言阶段)
  • 百炼MCP与IoT实战(三):手搓自定义MCP Server与阿里云FC配置
  • 「Java案例」判断是否是闰年的方法
  • 【JS笔记】Java Script学习笔记
  • stm32f4 dma的一些问题
  • 20250718-4-Kubernetes 应用程序生命周期管理-Pod对象:实现机制_笔记