返回顶部
首页 > 资讯 > 精选 >如何理解Java数组
  • 394
分享到

如何理解Java数组

2023-06-16 11:06:16 394人浏览 泡泡鱼
摘要

这篇文章主要讲解了“如何理解Java数组”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解Java数组”吧!01、什么是数组按照 Javadoc  给出的解释,数组是一个对象,

这篇文章主要讲解了“如何理解Java数组”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解Java数组”吧!

01、什么是数组

按照 Javadoc  给出的解释,数组是一个对象,它包含了一组固定数量的元素,并且这些元素的类型是相同的。数组会按照索引的方式将元素放在指定的位置上,意味着我们可以通过索引来访问到这些元素。在  Java 中,索引是从 0 开始的。

我们可以将数组理解为一个个整齐排列的单元格,每个单元格里面存放着一个元素。

数组元素的类型可以是基本数据类型(比如说 int、double),也可以是引用数据类型(比如说 String),包括自定义类型的对象。

了解了数组的定义后,让我们来深入地研究一下数组的用法。

在 Java 中,数组的声明方式有两种。

先来看第一种:

int[] anArray;

再来看第二种:

int anOtherArray[];

不同之处就在于中括号的位置,是紧跟类型,还是放在变量名的后面。前者比后者的使用频率更高一些。

接下来就该看看怎么初始化数组了,同样有多种方式可以初始化数组,比如说最常见的是:

int[] anArray = new int[10];

使用了 new 关键字,对吧?这就意味着数组的确是一个对象。然后,在方括号中指定了数组的长度,这是必须的。

这时候,数组中的每个元素都会被初始化为默认值,int 类型的就为 0,Object 类型的就为 null。

另外,还可以使用大括号的方式,直接初始化数组中的元素:

int anOtherArray[] = new int[] {1, 2, 3, 4, 5};

这时候,数组的元素分别是 1、2、3、4、5,索引依次是 0、1、2、3、4。

02、访问数组

前面提到过,可以通过索引来访问数组的元素,就像下面这样:

anArray[0] = 10; System.out.println(anArray[0]);

通过数组的变量名,加上中括号,加上元素的索引,就可以访问到数组,通过“=”操作符进行赋值。

如果索引的值超出了数组的界限,就会抛出  ArrayIndexOutOfBoundException,关于这方面的知识,我之前特意写过一篇文章,如果你感兴趣的话,可以跳转过去看看。

为什么会发生ArrayIndexOutOfBoundsException

我觉得原因挺有意思的。

既然数组的索引是从 0 开始,那就是到数组的 length - 1 结束,不要使用超出这个范围内的索引访问数组,就不会抛出数组越界的异常了。

03、遍历数组

当数组的元素非常多的时候,逐个访问数组就太辛苦了,所以需要通过遍历的方式。

第一种,使用 for 循环:

int anOtherArray[] = new int[] {1, 2, 3, 4, 5}; for (int i = 0; i < anOtherArray.length; i++) {     System.out.println(anOtherArray[i]); }

通过 length 属性获取到数组的长度,然后索引从 0 开始遍历,就得到了数组的所有元素。

第二种,使用 for-each 循环:

for (int element : anOtherArray) {     System.out.println(element); }

如果不需要关心索引的话(意味着不需要修改数组的某个元素),使用 for-each 遍历更简洁一些。当然,也可以使用 while 和 do-while  循环。

04、可变参数

可变参数用于将任意数量的参数传递给方法:

void varargsMethod(String... varargs) {}

varargsMethod() 方法可以传递任意数量的字符串参数,可以是 0 个或者 N  个,本质上,可变参数就是通过数组实现的,为了证明这一点,我们可以通过 jad 反编译一下字节码:

public class VarargsDemo {      public VarargsDemo()     {     }      transient void varargsMethod(String as[])     {     } }

所以我们其实可以直接将数组作为参数传递给可变参数的方法:

VarargsDemo demo = new VarargsDemo(); String[] anArray = new String[] {"沉默王二", "一枚有趣的程序员"}; demo.varargsMethod(anArray);

也可以直接传递多个字符串,通过逗号隔开的方式:

demo.varargsMethod("沉默王二", "一枚有趣的程序员");

05、把数组转成 List

List 封装了很多常用的方法,方便我们对集合进行一些操作,而如果直接操作数组的话,多有不便,因此有时候我们需要把数组转成 List。

比较原始的方式,就是通过遍历数组的方式,一个个将数组添加到 List 中。

int[] anArray = new int[] {1, 2, 3, 4, 5};  List<Integer> aList = new ArrayList<>(); for (int element : anArray) {     aList.add(element); }

更优雅的方式是通过 Arrays 类的 asList() 方法:

List<Integer> aList = Arrays.asList(anArray);

但需要注意的是,该方法返回的 ArrayList 并不是 java.util.ArrayList,它其实是 Arrays 类的一个内部类:

private static class ArrayList<E> extends AbstractList<E>         implements RandoMaccess, java.io.Serializable{}

如果需要添加元素或者删除元素的话,最好把它转成 java.util.ArrayList。

new ArrayList<>(Arrays.asList(anArray));

06、把数组转成 Stream

Java 8 新增了 Stream 流的概念,这就意味着我们也可以将数组转成 Stream 进行操作,而不是 List。

String[] anArray = new String[] {"沉默王二", "一枚有趣的程序员", "好好珍重他"}; Stream<String> aStream = Arrays.stream(anArray);

也可以直接对数组的元素进行剪辑,通过指定索引的方式:

Stream<String> anotherStream = Arrays.stream(anArray, 1, 3);

结果包含"一枚有趣的程序员"和"好好珍重他",1 这个索引位置包括,3 这个索引位置不包括。

07、数组排序

Arrays 类提供了一个 sort() 方法,可以对数组进行排序

  • 基本数据类型按照升序排列

  • 实现了 Comparable 接口的对象按照 compareTo() 的排序

来看第一个例子:

int[] anArray = new int[] {5, 2, 1, 4, 8}; Arrays.sort(anArray);

排序后的结果如下所示:

[1, 2, 4, 5, 8]

来看第二个例子:

String[] yetAnotherArray = new String[] {"A", "E", "Z", "B", "C"}; Arrays.sort(yetAnotherArray, 1, 3,                 Comparator.comparing(String::toString).reversed());

只对 1-3 位置上的元素进行反序,所以结果如下所示:

[A, Z, E, B, C]

08、数组搜索

有时候,我们需要从数组中查找某个具体的元素,比较直接的方式就是通过遍历的方式:

int[] anArray = new int[] {5, 2, 1, 4, 8}; for (int i = 0; i < anArray.length; i++) {     if (anArray[i] == 4) {         System.out.println("找到了 " + i);         break;     } }

上例中从数组中查询元素 4,找到后通过 break 关键字退出循环。

如果数组提前进行了排序,就可以使用二分查找法,这样效率就会更高一些。Arrays.binarySearch()  方法可供我们使用,它需要传递一个数组,和要查找的元素。

int[] anArray = new int[] {1, 2, 3, 4, 5}; int index = Arrays.binarySearch(anArray, 4);

感谢各位的阅读,以上就是“如何理解Java数组”的内容了,经过本文的学习后,相信大家对如何理解Java数组这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: 如何理解Java数组

本文链接: https://lsjlt.com/news/283214.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何理解Java数组
    这篇文章主要讲解了“如何理解Java数组”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解Java数组”吧!01、什么是数组按照 Javadoc  给出的解释,数组是一个对象,...
    99+
    2023-06-16
  • 如何进行java数组解析
    这期内容当中小编将会给大家带来有关如何进行java数组解析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。数组(array)是相同类型变量的集合,可以使用共同的名字引用它。数组可被定义为任何类型,可以是一维...
    99+
    2023-06-03
  • Java 数组中的冒泡排序算法如何理解
    这篇文章跟大家分析一下“Java 数组中的冒泡排序算法如何理解”。内容详细易懂,对“Java 数组中的冒泡排序算法如何理解”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习“Java ...
    99+
    2023-06-02
  • 如何理解JavaScript中的数组
    这期内容当中小编将会给大家带来有关如何理解JavaScript中的数组,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。  什么是数组?字面理解就是 数字的组合,其...
    99+
    2024-04-02
  • 如何理解javascript中伪数组
    这篇文章主要讲解了“如何理解javascript中伪数组”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解javascript中伪数组”吧! ...
    99+
    2024-04-02
  • 如何理解Shell脚本数组
    这篇文章主要介绍“如何理解Shell脚本数组”,在日常操作中,相信很多人在如何理解Shell脚本数组问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理解Shell脚本数组”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-09
  • Java 接口如何处理数组响应?
    Java 中的接口是一种约定,它定义了一组方法,这些方法可以被类实现,并且可以被其他类使用。在接口中,我们可以定义方法的签名,但是不能实现方法的具体逻辑,这些逻辑由实现类来完成。那么在接口中如何处理数组响应呢?本篇文章将为您详细解答。 在...
    99+
    2023-06-14
    接口 数组 响应
  • Git中如何管理Java中的数组?
    在Java开发中,数组是一种非常常见的数据结构,它可以存储多个相同类型的元素。在Git中,如何管理Java中的数组呢?本文将介绍Git中的数组管理方式,并通过演示代码来帮助读者更好地理解。 Git中的数组管理方式 在Git中,可以使用数组来...
    99+
    2023-08-29
    git 数组 numpy
  • Java 响应数组面试题:如何优雅地处理数组?
    在 Java 编程中,数组是一个非常重要的数据结构。它可以用来存储一组相同类型的元素,并且可以通过索引来访问这些元素。在面试中,经常会出现关于数组的问题,特别是关于如何优雅地处理数组的问题。在本文中,我们将探讨一些常见的数组面试题,并提供...
    99+
    2023-09-13
    响应 数组 面试
  • 如何理解Linux Shell脚本数组和关联数组
    本篇内容主要讲解“如何理解Linux Shell脚本数组和关联数组”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解Linux Shell脚本数组和关联数组”吧!一、数组和关联数组数组是Sh...
    99+
    2023-06-09
  • java数组如何赋值
    Java 语言中数组必须先初始化,然后才可以使用。所谓初始化,就是为数组的数组元素分配内存空间,并为每个数组元素赋初始值。初始化数组有以下 3 种方式:1)使用 new 指定数组大小后进行初始化使用 new 关键字创建数组,在创建时指定数组...
    99+
    2017-10-20
    java
  • java数组如何排序
    java中几种数组排序的方法:1、使用Arrays.sort()排序Arrays.sort()排序方法在java中是最简单且最常用的排序方法。int []arr1= {45,34,59,55}; Arrays.sort(arr1);//调用...
    99+
    2016-11-25
    java基础 java 数组
  • java数组如何定义
    Java中定义数组的语法有两种:动态方式(指定数组的长度)格式: (推荐学习:java课程)数据类型[] 数组名字 = new 数组存储的数据类型[长度];[] : 表示数组。数组名字:为定义的数组起个变量名,满足标识符规范,可以使用...
    99+
    2021-05-19
    java入门 java
  • java如何使用数组
    这篇文章主要为大家展示了“java如何使用数组”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“java如何使用数组”这篇文章吧。使用简单数组(1)创建一个名为T0...
    99+
    2024-04-02
  • java中main函数如何理解
    本篇文章给大家分享的是有关java中main函数如何理解,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。前言前段时间看到一道面试题:“main函数可以被重载么?”,当时就蒙圈了,...
    99+
    2023-06-26
  • 如何使用 Java 接口处理数组响应?
    在 Java 编程中,接口是一个非常重要的概念。它是一种定义了方法和常量的抽象类型,可以让开发者在不实现任何方法的情况下定义一些规范。接口在处理数组响应时也非常有用,因为它可以让我们定义一些通用的方法来处理不同类型的数组响应。本文将介绍如...
    99+
    2023-06-14
    接口 数组 响应
  • 在Java中如何处理数组中的空值?
    在Java中,数组是一种常见的数据类型,它可以存储一组相同类型的数据。但是,在实际开发中,我们经常会遇到数组中存在空值的情况。这时,我们需要对数组中的空值进行处理,以确保程序的正确性和稳定性。 本文将介绍在Java中如何处理数组中的空值,包...
    99+
    2023-09-30
    数组 bash windows
  • 如何使用Java数组处理实时接口数据?
    在现代软件开发中,实时接口数据处理已经成为了一个非常重要的部分。而在Java开发中,数组是处理数据的重要工具之一。因此,在本文中,我们将讨论如何使用Java数组处理实时接口数据。 一、什么是实时接口数据? 实时接口数据是指从外部设备或系统...
    99+
    2023-06-06
    实时 接口 数组
  • java数组如何初始化?
    Java语言中数组必须先初始化,然后才可以使用。所谓初始化就是为数组的数组元素分配内存空间,并为每个数组元素附初始值。注意:数组完成初始化后,内存空间中针对该数组的各个元素就有个一个默认值: ● 基本数据类型的整数类型(byte、short...
    99+
    2018-03-13
    java教程 java 数组 初始化
  • java 如何初始化数组
    一、什么是初始化在Java程序开发中,使用数组之前都会对其进行初始化,这是因为数组是引用类型,声明数组只是声明一个引用类型的变量,并不是数组对象本身,只要让数组变量指向有效的数组对象,程序中就可使用该数组变量来访问数组元素。所谓数组初始化就...
    99+
    2018-10-10
    java入门 java 初始化 数组
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作