【Java开发指南 | 第十六篇】Java数组及Arrays类

news2024/11/19 7:43:43

读者可订阅专栏:Java开发指南 |【CSDN@秋说】

在这里插入图片描述

文章目录

    • 数组
    • 数组特点
    • 创建数组
    • 处理数组
    • 多维数组
    • Arrays类

数组

Java中的数组是一种用来存储固定大小的相同类型元素的数据结构。

数组特点

数组具有以下特点:

1、固定大小: 一旦数组被创建,其大小就不能被改变。

2、相同类型元素: 数组中的所有元素必须是相同的数据类型,可以是基本数据类型(如int、double等)或者是引用数据类型(如对象)。

3、连续内存空间: 数组中的元素在内存中是连续存储的。

4、零索引: 数组的元素是通过索引访问的。数组的索引从零开始,即第一个元素的索引是0,第二个元素的索引是1,以此类推到 arrayRefVar.length-1。

创建数组

1、

dataType[] arrayRefVar;   //声明数组的类型和名称

//char[] myArray;

在这里插入图片描述

不能按这种方法创建声明数组:char[10] arr;

在这里插入图片描述

2、

dataType arrayRefVar[];
//声明数组的类型和名称

//可以指定其大小
//int[] myArray = new int[5];
public class ice {
    public static void main(String[] args) {
       int arr[] = new int[5];

       for(int i=0;i<arr.length;i++)
        {
            System.out.println(i*2);
        }

    }
}

在这里插入图片描述

3、

dataType[] arrayRefVar = {value0, value1, ..., valuek};

//char[] myArrar={'a','b','c','d'}

例如:

public class ice {
    public static void main(String[] args) {
       int[] arr = {'1','2','3','a'};
    }
}

处理数组

数组的元素类型和数组的大小都是确定的,所以当处理数组元素时候,我们通常使用基本循环或者 For-Each 循环。

public class ice {
    public static void main(String[] args) {
       int arr[] = new int[5];
        
        for(int i=0;i<arr.length;i++)
        {
            arr[i]=i*2;
        }//循环进行赋值

       for(int i=0;i<arr.length;i++)
        {
            System.out.println(arr[i]);
        }//循环进行打印

    }
}

在这里插入图片描述

多维数组

type[][] typeName = new type[typeLength1][typeLength2];

创建一个两行三列的二维数组 a :

int[][] a = new int[2][3];

访问二维数组中第二行第一列的元素:

int t=a[1][0];

Arrays类

java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的。

排序(Sorting)

  • sort(T[] a): 对指定数组进行排序,使用默认的比较器。
import java.util.Arrays;

public class ice {
    public static void main(String[] args) {
        int[] arr = {1,12,543,235,2,13,122,43};
        Arrays.sort(arr);
        for(int i=0;i<arr.length;i++)
        {
            System.out.println(arr[i]);
        }
    }
}

在这里插入图片描述

  • sort(T[] a, Comparator<? super T> c): 对指定数组根据指定比较器进行排序。
  • parallelSort(T[] a): 对指定数组进行并行排序,使用默认的比较器。
  • parallelSort(T[] a, Comparator<? super T> c): 对指定数组进行并行排序,使用指定的比较器。

搜索(Searching)

  • binarySearch(T[] a, T key): 在指定数组中搜索指定的元素,返回元素的索引。数组必须是有序的。
import java.util.Arrays;

public class ice {
    public static void main(String[] args) {
        int[] arr = {1,12,543,235,2,13,122,43};
        Arrays.sort(arr);
        int t=Arrays.binarySearch(arr,543);
        System.out.println(t);
    }
}

在这里插入图片描述

  • binarySearch(T[] a, int fromIndex, int toIndex, T key): 在指定范围内的数组中搜索指定的元素,返回元素的索引。数组必须是有序的。

比较(Comparing)

  • equals(T[] a, T[] a2): 比较两个数组是否相等。
  • deepEquals(Object[] a1, Object[] a2): 深度比较两个数组是否相等。

填充(Filling)

  • fill(T[] a, T val): 将指定数组的所有元素替换为指定值。
  • fill(T[] a, int fromIndex, int toIndex, T val): 将指定范围内的数组元素替换为指定值。

转换为列表(Converting to List)

  • asList(T... a): 将指定数组转换为 List。
import java.util.Arrays;
import java.util.List;

public class ice {
    public static void main(String[] args) {
        Integer[] arr = {1,12,543,235,2,13,122,43}; // 使用 Integer 类型的数组
        List<Integer> a = Arrays.asList(arr);
        System.out.println(a);
    }
}

在这里插入图片描述

注意:列表不能直接复制给数组,因为基本数据类型不能作为泛型的参数。

/*无法输出正确列表*/
import java.util.Arrays;
import java.util.List;

public class ice {
    public static void main(String[] args) {
        int[] arr = {1,12,543,235,2,13,122,43};
        List a = Arrays.asList(arr);
        System.out.println(a);
    }
}

在这里插入图片描述

数组的输出(Array Output)

  • toString(T[] a): 返回数组的字符串表示形式。
import java.util.Arrays;

public class ice {
    public static void main(String[] args) {
        int[] arr = {1,12,543,235,2,13,122,43};
        String a = Arrays.toString(arr);
        System.out.println(a);
    }
}

在这里插入图片描述

数组的复制(Array Copying)

  • copyOf(T[] original, int newLength): 将指定数组的前几个元素复制到一个新数组中,新数组的长度为指定长度。
import java.util.Arrays;
import java.util.List;

public class ice {
    public static void main(String[] args) {
        int[] arr = {1,12,543,235,2,13,122,43};
        int[] brr=Arrays.copyOf(arr,3);
        System.out.println(Arrays.toString(brr));
    }
}

在这里插入图片描述

  • copyOfRange(T[] original, int from, int to): 将指定数组的指定范围的元素复制到一个新数组中。
import java.util.Arrays;
import java.util.List;

public class ice {
    public static void main(String[] args) {
        int[] arr = {1,12,543,235,2,13,122,43};
        int[] brr=Arrays.copyOfRange(arr,3,6);
        System.out.println(Arrays.toString(brr));
    }
}

在这里插入图片描述

数组的填充(Array Padding)

  • copyOfRange(T[] original, int from, int to): 将指定数组的指定范围的元素复制到一个新数组中,并使用指定值填充不足的部分。

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

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

相关文章

【云计算】云数据中心网络(五):对等连接

《云网络》系列&#xff0c;共包含以下文章&#xff1a; 云网络是未来的网络基础设施云网络产品体系概述云数据中心网络&#xff08;一&#xff09;&#xff1a;VPC云数据中心网络&#xff08;二&#xff09;&#xff1a;弹性公网 IP云数据中心网络&#xff08;三&#xff09;…

vue3 echarts 图表主题切换

我主要是用了localStorage和composable来实现的。 先创建composable文件夹存储composable的操作方法&#xff1b; 在App.vue文件里面&#xff0c;先将主题数据存储在localStorage里面&#xff1b; 主题切换 图表theme包更换 为什么要用composable呢&#xff1f; 单纯的使用…

CS61B sp21fall Project02 Gitlet

Project02 Gitlet 一、项目简介二、Git和Gitlet2.1 Git简介2.2 Gitlet简介 三、框架设计3.1 Blobs3.2 Trees3.3 Commits 四、.Gitlet文件结构设计4.1 .git文件架构4.1.1 重点介绍index&#xff08;VSCode中无法查看&#xff0c;会乱码&#xff09;objects&#xff08;VSCode中无…

【汇编语言】初识汇编

【汇编语言】初识汇编 文章目录 【汇编语言】初识汇编前言由机器语言到汇编语言机器语言与机器指令汇编语言与汇编指令汇编语言程序示例 计算机组成指令和数据的表示计算机的存储单元计算机的总线 内存读写与地址空间CPU对存储器的读写内存地址空间 总结 前言 为什么要学习汇编…

精通MongoDB聚合操作API:深入探索高级技巧与实践

MongoDB 聚合操作API提供了强大的数据处理能力&#xff0c;能够对数据进行筛选、变换、分组、统计等复杂操作。本文介绍了MongoDB的基本用法和高级用法&#xff0c;高级用法涵盖了setWindowFields、merge、facet、expr、accumulator窗口函数、结果合并、多面聚合、查询表达式在…

动态库静态库linux

动态库静态库 静态库 静态库必须包含在可执行文件里&#xff0c;整个都要包含 缺点&#xff1a;消耗系统大&#xff0c;每个使用静态库的程序都要复制静态库&#xff08;浪费内存&#xff09; 影响使用场景&#xff1a; 在静态库内存小的时候&#xff0c;可以用来提升速度 制…

Linux(CentOS7)离线使用安装盘部署Telnet

# [pdf在线免费转word文档](https://orcc.online/pdf) https://orcc.online/pdf 挂载镜像CentOS-7-x86_64-DVD-1810.iso到/mnt下&#xff08;其他位置也行&#xff09;&#xff0c;命令如下&#xff1a; mount /dev/sr0 /mnt 安装包默认在Packages目录下&#xff0c;需要安装…

【QT进阶】Qt Web混合编程之CMake VS2019编译并使用QCefView(图文并茂超详细版本)

往期回顾 【QT进阶】Qt Web混合编程之CEF、QCefView简单介绍-CSDN博客 【QT进阶】Qt Web混合编程之VS2019 CEF的编译与使用&#xff08;图文并茂超详细介绍&#xff09;-CSDN博客【QT进阶】Qt Web混合编程之QWebEngineView基本用法-CSDN博客【QT进阶】Qt Web混合编程之VS2019 C…

AI生图美学在淘宝的实践应用

本文介绍了如何制定和应用美学标准来评估和改善人工智能生成的图像质量&#xff0c;特别是在电商领域的应用&#xff0c;主要分为制定美学标准、训练美学模型、应用美学模型、升级淘宝风格模型四个步骤。 美学的定义与分析 图像质量标准&#xff1a;现代设计框架下&#xff0c;…

类和对象【二】this指针,构造函数和成员初始化列表【超详细】

文章目录 this指针this指针的定义this指针的“工作”原理this指针的作用this指针的特点 构造函数构造函数的定义构造函数的作用构造函数的特点构造函数的调用方式括号法无参构造或者全缺省构造需要传参才能调用的构造函数 隐式类型转换法是只传一个参数就能调用的构造函数是要传…

HCIE-Shell实验1

要求&#xff1a; 判断当前磁盘剩余空间是否有20G&#xff0c;如果小于20G&#xff0c;则将报警邮件发送给管理员&#xff0c;每天检查一次磁盘剩余空间。判断web服务是否运行(1、査看进程的方式判断该程序是否运行&#xff0c;2、通过查看端口的方式判断该程序是否运行)&…

大模型应用开发基础

AGI 时代&#xff0c;AI 无处不在&#xff0c;形成新的社会分层&#xff1a; AI 使用者&#xff0c;使用别人开发的 AI 产品AI 产品开发者&#xff0c;设计和开发 AI 产品基础模型相关&#xff0c;训练基础大模型&#xff0c;或为大模型提供基础设施 越向下层&#xff0c;重要…

Leetcode-168.Excel表列名称

题目描述 给你一个整数 columnNumber &#xff0c;返回它在 Excel 表中相对应的列名称。 例如&#xff1a; A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ...示例 1&#xff1a; 输入&#xff1a;columnNumber 1 输出&#xff1a;"A"…

ROS2学习笔记(一) 基本概念

1. Node 节点 节点: 完成具体功能的模块 相关命令 #运行命令 ros2 run <package_name> <executable_name>#当前节点查询查询 ros2 node list#重映射 Remapping ros2 run <package_name> <executable_name> --ros-args --remap __node:<node_na…

揭开ChatGPT面纱(一):准备工作(搭建开发环境运行OpenAI Demo)

文章目录 序言&#xff1a;探索人工智能的新篇章一、搭建开发环境二、编写并运行demo1.代码2.解析3.执行结果 本博客的gitlab仓库&#xff1a;地址&#xff0c;本博客对应01文件夹。 序言&#xff1a;探索人工智能的新篇章 随着人工智能技术的飞速发展&#xff0c;ChatGPT作为…

虚拟ip地址怎么弄到手机上

在当下的社会&#xff0c;手机已经变得至关重要&#xff0c;它融入了我们的日常生活&#xff0c;无论是上网冲浪、社交互动&#xff0c;还是工作学习&#xff0c;都离不开它。但有时候&#xff0c;由于某些限制&#xff0c;我们可能无法充分享受网络带来的便利。这时&#xff0…

《苍穹外卖》Day02部分知识点记录

一、属性的拷贝以及密码的加密 使用org.springframework.beans中的BeanUtils.copyProperties()方法时&#xff0c;二者的属性名必须要一致。 /*** 新增员工* param employeeDTO*/Overridepublic void save(EmployeeDTO employeeDTO) {Employee employee new Employee();// 对…

spring webflux 小结

一、WebFlux 简介 WebFlux 是 Spring Framework5.0 中引入的一种新的反应式Web框架。通过Reactor项目实现Reactive Streams规范&#xff0c;完全异步和非阻塞框架。本身不会加快程序执行速度&#xff0c;但在高并发情况下借助异步IO能够以少量而稳定的线程处理更高的吞吐&…

COIN++: Neural Compression Across Modalities 论文阅读笔记

1. 论文基本信息 发布于&#xff1a; TMLR 2022 2. 创新点 使用元学习将编码时间减少了两个数量级以上&#xff0c;将编码共享结构进行编码&#xff0c;并对该网络应用调制来编码实例特定信息。量化和熵编码调制。虽然我们的方法在压缩和速度方面都大大超过了 COIN&#xff0…

Navicat导入sql文件图文教程

本文使用的MySQL工具为:Navicat.默认已经连接数据库!! 步骤: 1.右键自己的数据库,选择新建数据库. 2.输入数据库名称&#xff0c;字符集选择“utf8”&#xff0c;排序规则选择“ utf8_general_ci”,确定. 3.双击新建好的“数据库”。右键点击“运行SQL文件”。 4.选择本地的s…