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

数组 (java)

文章目录

  • 一维数组
    • 静态初始化
    • 动态初始化
  • 二维数组
    • 静态初始化
    • 动态初始化
  • 数组参数传递
  • 可变参数
  • 关于 main 方法的形参 args
  • Array 工具类
    • sort 中的 comparable 和 comparator
      • comparator 比较器排序
      • comparable 自然排序

一维数组

线性结构

静态初始化

第一种:int[] arr = {1,2,3,4},
第二种:int[] arr = new int[] {1,2,3,4,5};

括号放变量名后面也行



动态初始化

int[] arr = new int[5];
arr[0] = 1;

动态初始化后,都会有默认值
在这里插入图片描述




二维数组

二维数组就是中的每个元素都是一个一维数组

在这里插入图片描述

静态初始化

第一种:int[][] arr = {{1,2,3,4,},{1,2,3}};
第二种:int[][] arr2 = new int[][] {{1,2}, {1}};


动态初始化

等长:int[][] arr = new int[5][4];//表示有3个一维数组,长度可以自己定制
不等长:int[][] arr = new int[3][];arr[0] = new int[4];arr[1] = new int[2];arr[2] = new int[2];



数组参数传递

public class Teset {public static void main(String[] args) {int[][] arr = new int[][] {{1,2,3},{1,2}};System.out.println(arr); //[[I@4eec7777int[][] newarr = func(arr);System.out.println(newarr);//[[I@4eec7777}public static int[][] func(int[][] arr) {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();}return arr;}
}

数组是引用类型,所以传的是地址,而且会影响传过来的数组的值,因为传的是地址,返回值这块也是把原本的地址返回去




可变参数

ublic class Teset {public static void main(String[] args) {int[] arr3 = func(1,2,3,4);System.out.println(arr3);//[I@4eec7777int[] arr4 = func(1,2,3);System.out.println(arr4);//[I@3b07d329int[] arr = new int[] {1,2,3,4};System.out.println(arr);//[I@41629346int[] arr2 = func(arr);System.out.println(arr2);//[I@41629346}public static int[] func(int...num) {return num;}}

可变参数本质上就是一个一维数组

在形参列表中,可变参数只能有一个,并且只能在参数列表的末尾出现




关于 main 方法的形参 args

作用:接收命令行参数用的,例如cmd中的 ipconfig -t 这个 -t 就是命令行参数

public class array {public static void main(String[] args) {}  
}

jvm 调用 array.main 方法的时候,创建一个 string 数组, 对"命令行参数" “abc def xyz" 以空格进行拆分,生成一个新的数组对象,最后这个数组对象是 String[] args = {“abc”, “def”, “xyz”},没有指定命令行参数,那它就是个长度为 0 的数组

需求

使用系统,需要提供正确口令(用户名和密码)在只有命令行的情况下

如果用户名是admin 并且密码是 admin123,则表示合法用户,非法用户直接退出,




Array 工具类

在这里插入图片描述
超过4096个数据用 parallelsort



sort 中的 comparable 和 comparator

sort 实现的是自然排序

comparator 比较器排序

这里匿名内部类, 实现底层的 comparator 接口,然后重写 compare 方法,得到一个比较器对象
返回正数:大的数放后面 (o1 > o2 )
返回负数:小的数放后面 (o1 < o2 )
相等:直接放一样的后面 (o1 = o2 )

public class Teset {public static void main(String[] args) {Integer[] arr = {1,2,1,3,2,5,4};Arrays.sort(arr, new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {return o1 - o2;}});System.out.println(Arrays.toString(arr));}}


comparable 自然排序

自定义的类,没有没有自然排序,所以要自己实现
返回正数:大的数放后面 (o1 > o2 )
返回负数:小的数放后面 (o1 < o2 )
相等:直接放一样的后面 (o1 = o2 )

public class Teset {public static void main(String[] args) {Test test = new Test(10);Test test1 = new Test(4);Test test2 = new Test(30);Test[] tarr = {test, test1, test2};//自定义类底层没有自然排序所以要自己实现一个,不然会报错Arrays.sort(tarr);System.out.println(Arrays.toString(tarr));}}class Test implements Comparable {int age;public Test(int age) {this.age = age;}@Overridepublic int compareTo(Object o) {Test t = (Test) o;return this.age - t.age;}@Overridepublic String toString() {return "Test{" +"age=" + age +'}';}
}

相关文章:

  • 一文读懂LLM API应用开发基础(万字长文)
  • 注意 llamaIndex 中 Chroma 的坑!
  • Go 三色标记法:一种高效的垃圾回收策略
  • 搭建Vue的环境
  • 数据库精选题(二)(引言+关系代数)
  • SFF1006A-ASEMI无人机专用SFF1006A
  • AGV机器人的调度开发分析(1)- 内核中的路线规划
  • 商超智能守护:AI监控技术在零售安全中的应用
  • Rust:warp 编写 RESTful API 的示例及原理分析
  • SLAM Paper Reading和代码解析
  • Git分支的状态存储——stash命令的详细用法
  • 实时语音翻译软件哪个好?多语言实时沟通无负担
  • BigDecimal 小数位的处理(RoundingMode)
  • Eigen::Isometry3d变换矩阵的常用方法
  • Pwn刷题记录(不停更新)
  • codis proxy处理流程
  • Python学习之路16-使用API
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 解析带emoji和链接的聊天系统消息
  • 区块链技术特点之去中心化特性
  • 区块链将重新定义世界
  • 人脸识别最新开发经验demo
  • 新版博客前端前瞻
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • 整理一些计算机基础知识!
  • 昨天1024程序员节,我故意写了个死循环~
  • ​Spring Boot 分片上传文件
  • ​ubuntu下安装kvm虚拟机
  • ​必胜客礼品卡回收多少钱,回收平台哪家好
  • # Apache SeaTunnel 究竟是什么?
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #Linux(帮助手册)
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (Forward) Music Player: From UI Proposal to Code
  • (二)Kafka离线安装 - Zookeeper下载及安装
  • (二)Linux——Linux常用指令
  • (二)windows配置JDK环境
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (强烈推荐)移动端音视频从零到上手(上)
  • (三)elasticsearch 源码之启动流程分析
  • (一)、python程序--模拟电脑鼠走迷宫
  • (转)http-server应用
  • (转)Linux下编译安装log4cxx
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • (最新)华为 2024 届秋招-硬件技术工程师-单板硬件开发—机试题—(共12套)(每套四十题)
  • *Django中的Ajax 纯js的书写样式1
  • .aanva
  • .bat批处理(六):替换字符串中匹配的子串
  • .htaccess 强制https 单独排除某个目录
  • .Net 6.0 处理跨域的方式
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .NET 表达式计算:Expression Evaluator
  • .NET 漏洞分析 | 某ERP系统存在SQL注入
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • @RequestParam,@RequestBody和@PathVariable 区别