java数组的初始化及操作详解

 更新时间:2019年07月03日 09:09:27   作者:幸运的lerou  
在本文中小编给大家整理了关于java数组的初始化及操作的相关知识点内容,需要的读者们参考下。

数组的基本概念

如果说现在要求你定义100个整型变量,那么如果按照之前的做法,可能现在定义的的结构如下:

int i1, i2, i3, ... i100;

但是这个时候如果按照此类方式定义就会非常麻烦,因为这些变量彼此之间没有任何的关联,也就是说如果现在突然再有一个要求,要求你输出这100个变量的内容,意味着你要编写System.out.println()语句100次。

其实所谓的数组指的就是一组相关类型的变量集合,并且这些变量可以按照统一的方式进行操作。数组本身属于引用数据类型,那么既然是引用数据类型,这里面实际又会牵扯到内存分配,而数组的定义语法有如下两类。

数组动态初始化

声明并开辟数组

数据类型 [] 数组名称 = new 数据类型[长度];
数据类型 [] 数组名称 = new 数据类型[长度];
分布进行数组空间开辟(实例化)
| Tables | Are |
| ------------- |:-------------😐
| 声明数组: | 数组类型 数组名称[] = null; | | | 数组类型 [] 数组名称 =null; | | 开辟数组空间: | 数组名称 =new` 数组类型[长度]; |
那么当数组开辟空间之后,就可以采用如下的方式的操作:

数组的访问通过索引完成,即:“数组名称[索引]”,但是需要注意的是,数组的索引从0开始,所以索引的范围就是0 ~ 数组长度-1,例如开辟了3个空间的数组,所以可以使用的索引是:0,1,2,如果此时访问的时候超过了数组的索引范围,会产生java.lang.ArrayIndexOutOfBoundsException 异常信息;

当我们数组采用动态初始化开辟空间后,数组里面的每一个元素都是该数组对应数据类型的默认值;

数组本身是一个有序的集合操作,所以对于数组的内容操作往往会采用循环的模式完成,数组是一个有限的数据集合,所以应该使用 for 循环。

在 Java 中提供有一种动态取得数组长度的方式:数组名称.length;

java编程中,我们知道程序=算法+数据结构,而最基本的数据结构就是数组;相同的数据类型的元素的集合,我们称之为数组;以下对数组的初始化及操作做简单介绍。

声明数组:声明数组时,我们需要设定数组元素的类型,数组中的元素是具有相同数据类型的;然后需要一个变量或者叫引用来指向此数组,如int[] arr 或者int arr[],两个都可以。声明数组:声明数组时,我们需要设定数组元素的类型,数组中的元素是具有相同数据类型的;然后需要一个变量或者叫引用来指向此数组,如int[] arr 或者int arr[],两个都可以。

初始化数组

有两种方式进行初始化,一是直接new,二是直接赋值

数组的访问:获取数组长度

调用数组的length属性即可获取数组长度。

数组的访问:通过下标访问数组元素

注意下标是从0开始到length-1,访问方式为arr[i],i为下标。

数组的访问:遍历数组元素

以数组元素下标为递增变量,循环输出即可遍历。

数组的复制:System.arraycopy()

使用封装的System.arraycopy()方法即可对当前数组进行复制操作。

数组的复制:Array.copyOf()

使用java.util.Array类的此方法,也可以实现数组复制,此方法有以下特点:

1.如果newLength大于原数组长度,则用0或者null进行补充,相当于扩容;

2.如果newLength小于原数组的长度,则截取;

数组的排序:

常见的数组排序有插入排序,冒泡排序以及快速排序法,这里介绍最常用的冒泡排序法,即相邻两个元素进行比较,大的元素交换到后,小的交换到前,循环以此类推。

数组的排序:Arrays.sort()

JDK中提供的Arrays.sort()方法,也可以进行数组排序。

相关文章

  • Spring Boot 2.2 正式发布,大幅性能提升 + Java 13 支持

    Spring Boot 2.2 正式发布,大幅性能提升 + Java 13 支持

    随着 Spring Framework 5.2.0 成功发布之后,Spring Boot 2.2 也紧跟其后,发布了第一个版本:2.2.0。下面就来一起来看看这个版本都更新了些什么值得我们关注的内容
    2019-10-10
  • Activiti如何启动流程并使流程前进

    Activiti如何启动流程并使流程前进

    这篇文章主要介绍了Activiti如何启动流程并使流程前进,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Java反射及性能详细

    Java反射及性能详细

    这篇文章主要介绍了Java反射及性能,现如今的java工程中,反射的使用无处无在。无论是设计模式中的代理模式,还是红透半边天的Spring框架中的IOC,AOP等等,都存在大量反射的影子。下面我们就对该话题进行详细介绍,感兴趣的小伙伴可以参考一下
    2021-10-10
  • Spark操作之aggregate、aggregateByKey详解

    Spark操作之aggregate、aggregateByKey详解

    这篇文章主要介绍了Spark操作之aggregate、aggregateByKey详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • Struts2 ActionContext 中的数据详解

    Struts2 ActionContext 中的数据详解

    这篇文章主要介绍了Struts2 ActionContext 中的数据详解,需要的朋友可以参考下
    2016-07-07
  • Java使用jmeter进行压力测试

    Java使用jmeter进行压力测试

    本篇文章简单讲一下使用jmeter进行压力测试。其压测思想就是 通过创建指定数量的线程,同时请求指定接口,来模拟指定数量用户同时进行某个操作的场景,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • java微信公众号企业付款开发

    java微信公众号企业付款开发

    这篇文章主要为大家详细介绍了java微信公众号企业付款开发,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • 解决Request.getParameter获取不到特殊字符bug问题

    解决Request.getParameter获取不到特殊字符bug问题

    这篇文章主要介绍了解决Request.getParameter获取不到特殊字符bug问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • java8 LocalDate 使用详解

    java8 LocalDate 使用详解

    这篇文章主要介绍了java8 LocalDate 使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • Python基础之如何使用multiprocessing模块

    Python基础之如何使用multiprocessing模块

    今天带大家学习python多进程的相关知识,文中对multiprocessing模块的使用作了非常详细的介绍,需要的朋友可以参考下
    2021-06-06

最新评论