数组 (java)

news2024/10/7 5:25:39

文章目录

  • 一维数组
    • 静态初始化
    • 动态初始化
  • 二维数组
    • 静态初始化
    • 动态初始化
  • 数组参数传递
  • 可变参数
  • 关于 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@4eec7777

       int[][] 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@4eec7777
        
        int[] arr4 = func(1,2,3);
        System.out.println(arr4);//[I@3b07d329

        int[] arr = new int[] {1,2,3,4};
        System.out.println(arr);//[I@41629346

        int[] 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>() {
            @Override
            public 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;
    }

    @Override
    public int compareTo(Object o) {
        Test t = (Test) o;
        return this.age - t.age;
    }

    @Override
    public String toString() {
        return "Test{" +
                "age=" + age +
                '}';
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1854906.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于uni-app和图鸟UI开发上门服务小程序

一、技术栈选择 uni-app&#xff1a;我们选择了uni-app作为开发框架&#xff0c;因为它基于Vue.js&#xff0c;允许我们编写一次代码&#xff0c;发布到多个平台&#xff0c;包括iOS、Android、Web以及各种小程序。uni-app的丰富组件库、高效的状态管理以及便捷的预览调试功能&…

无霍尔BLDC驱动

目前主要的无霍尔控制方案是基于反电势检测信 息判断换相点,本文研究反电势在 PWM - OFF 点的检 测方案确定换相点。 1. 反电动势检测方案 BLDC 的模型做等效,将线圈阻抗看成是一个 线性电阻和一个储能电感的等效,其等效电路图如图 1所示。 电机三相绕组输出端电压的电压…

【PL理论深化】(3) MI 归纳法:归纳假设 (IH) | 结构归纳法 | 归纳假设的证明

&#x1f4ac; 写在前面&#xff1a;所有编程语言都是通过归纳法定义的。因此&#xff0c;虽然编程语言本身是有限的&#xff0c;但用该语言编写的程序数量是没有限制的&#xff0c;本章将学习编程语言研究中最基本的归纳法。本章我们继续讲解归纳法&#xff0c;介绍归纳假设和…

issues.sonatype.org网站废弃,Maven仓库账号被废弃问题解决

问题起因&#xff1a; 今天自己的项目发布了一个新版本&#xff0c;打算通过GitHub流水线直接推送至Maven中央仓库&#xff0c;结果发现报错 401&#xff0c;说我的账号密码认证失败。我充满了疑惑我寻思难度我的号被盗掉了吗。于是我打开Nexus Repository Manager尝试登录账号…

最新下载:XmanagerXShell【软件附加安装教程】

​相信大家都认同支持IPv6&#xff1a;最近越来越多的公司和国家都采用了IPv6&#xff0c;Xmanager的最新版本v5也加入支持这个功能&#xff0c;无论你是同时使用IPv4和IPv6网络或者完全的IPv6网络&#xff0c;Xmanager 5都可完全满足你的要求&#xff0c;使用MIT Kerberos认证…

Vue41 ref属性

ref属性 ref是Vue提供的获取组件的属性 <template><div><h1 v-text"msg" ref"title"></h1><button ref"btn" click"showDOM">点我输出上方的DOM元素</button><MySchool ref"sch"…

Android开发神器:OkHttp框架源码解析

NetworkInterceptors CallServiceInterceptor 1.RealInterceptorChain.proceed() 2.EventListener.callStart()也是在RealCall.execute()嵌入到Request调用过程, EventListener.callEnd()位于StreamAllocation中调用 3.Request.Builder url (String/URL/HttpUrl) header …

WordPress插件:子比zibll主题插件 炙焰美化全开源插件V3.2

在数字时代&#xff0c;拥有一个美观且功能丰富的网站是吸引和保持用户的关键。WordPress作为全球最受欢迎的内容管理系统之一&#xff0c;提供了一个灵活的平台&#xff0c;让网站所有者能够通过插件来增强其网站的功能和外观。"炙焰美化全开源插件V3.2"正是这样一款…

SD卡无法读取?数据恢复全攻略!

SD卡无法读取问题描述 在日常使用电子设备时&#xff0c;我们有时会遇到SD卡无法读取的情况。当插入SD卡后&#xff0c;设备可能无法识别或访问其中的数据&#xff0c;这给我们带来了诸多不便。SD卡无法读取&#xff0c;意味着存储在卡中的重要文件、照片和视频等资料可能面临…

QListView、QTableView或QTreeView截取滚动区域(截长图)

本文以QTreeView为例,理论上继承自QAbstractScrollArea的类都支持本文所述的方法。 一.效果 一共5个文件夹,每个文件文件夹下有5个文件,先把文件夹展开,然后截图。将滚动条拖到居中位置,是为了证明截图对滚动条无影响 下面是截的图 二.原理 将滚动区域的viewport设置为…

Typora最新安装教程2024

Typora是一款广受好评的跨平台Markdown编辑软件&#xff0c;支持Windows、MacOS和Linux操作系统。它的设计旨在提供一个无干扰、高效且直观的写作环境。户快速管理和查找文档&#xff0c;支持直接在软件内浏览和操作文件结构。 Typora以其简洁而强大的功能集合&#xff0c;成为…

SQL Server中CROSS APPLY连接操作

在 SQL Server 中&#xff0c;CROSS APPLY 是一个连接操作&#xff0c;它类似于 INNER JOIN&#xff0c;但有一些关键差异&#xff0c;特别是在处理表值函数&#xff08;TVF&#xff09;、行集函数或子查询时。CROSS APPLY 返回对于外部查询中的每一行&#xff0c;在内部查询或…

【栈和队列】

目录 1&#xff0c;栈&#xff08;Stack&#xff09; 1.1 概念 1.2 栈的使用 1.3 栈的模拟实现 1.4 栈的应用场景 1.5 概念区分 1.6 使用链表来实现栈 2&#xff0c; 队列(Queue) 2.1 概念 2.2 队列的使用 2.3 队列模拟实现 3&#xff0c;双端队列 (Deque) 4&…

r2frida:基于Frida的远程进程安全检测和通信工具

关于r2frida r2frida是一款能够将Radare2和Frida的功能合二为一的强大工具&#xff0c;该工具本质上是一个Radare2的自包含插件&#xff0c;可以帮助广大研究人员利用Frida的功能实现对目标进程的远程安全检测和通信管理。 Radare2项目提供了针对逆向工程分析的完整工具链&…

利用golang_Consul代码实现Prometheus监控目标的注册以及动态发现与配置

文章目录 前言一、prometheus发现方式二、监控指标注册架构图三、部分代码展示1.核心思想2.代码目录3、程序入口函数剖析4、settings配置文件5、初始化配置文件及consul6、全局变量7、配置config8、公共方法目录common9、工具目录tools10、service层展示11、命令行参数12、Make…

使用 axios 进行 HTTP 请求

使用 axios 进行 HTTP 请求 文章目录 使用 axios 进行 HTTP 请求1、介绍2、安装和引入3、axios 基本使用4、axios 发送 GET 请求5、axios 发送 POST 请求6、高级使用7、总结 1、介绍 什么是 axios axios 是一个基于 promise 的 HTTP 库&#xff0c;可以用于浏览器和 Node.js 中…

十大经典排序算法——选择排序和冒泡排序

一、选择排序 1.基本思想 每一次从待排序的数据元素中选出最小&#xff08;或最大&#xff09;的一个元素&#xff0c;存放在序列的起始位置&#xff0c;直到全部待排序的数据全部排完。 2.直接选择排序 (1) 在元素集合arr[i] — arr[n - 1]中选择关键妈的最大&#xff08;小…

目标检测数据集 - 手机屏幕表面表面缺陷检测数据集下载「包含VOC、COCO、YOLO三种格式」

数据集介绍&#xff1a;手机屏幕表面缺陷检测数据集&#xff0c;真实采集高质量手机屏幕表面含缺陷图片数据&#xff0c;数据集含多款不同型号和品牌的手机屏幕表面图片数据&#xff0c;包括苹果手机屏、三星手机屏、华为手机屏等数据。数据标注标签包括 Bubble 气泡/水滴、Scr…

google gemini1.5 flash视频图文理解能力初探(一)

市面能够对视频直接进行分析的大模型着实不多&#xff0c;而且很多支持多模态的大模型那效果着实也不好。 从这篇公众号不只是100万上下文&#xff0c;谷歌Gemini 1.5超强功能展示得知&#xff0c;Gemini 1.5可以一次性处理1小时的视频、11小时的音频或100,000行代码&#xff0…

修改源码,打patch包,线上环境不生效

1.首先看修改的源码文件是否正确 在node_modules中&#xff0c;找对应的包&#xff0c;然后查看包中package.json 的main和module。如果用require引入&#xff0c;则修改lib下面的组件&#xff0c;如果是import引入则修改es下面的文件 main 对应commonjs引入方式的程序入口文件…