Java中数组的定义和使用详解

举报
lwq1228 发表于 2021/10/27 21:33:28 2021/10/27
【摘要】 1、数组的定义和作用(1)什么是数组?数组是一种数据类型,存储相同数据类型的一组数据,声明数组是在内存中开辟一串连续的空间。(2)数组的定义方式动态初始化:初始化时只指明长度,由系统为数组分配初始值。格式:数据类型[] 数组名 = new 数据类型[数组长度];范例:int[] arr = new int[3];静态初始化:声明数组的同时对数组元素赋初始值。格式:数据类型[] 数组名 = ...

1、数组的定义和作用

(1)什么是数组?

数组是一种数据类型,存储相同数据类型的一组数据,声明数组是在内存中开辟一串连续的空间。

(2)数组的定义方式

  • 动态初始化:初始化时只指明长度,由系统为数组分配初始值。
格式:数据类型[] 数组名 = new 数据类型[数组长度];
范例:int[] arr = new int[3];
  • 静态初始化:声明数组的同时对数组元素赋初始值。
格式:数据类型[] 数组名 = new 数据类型[]{元素1取值,元素2取值,.....};
范例:int[] arr = new int[]{3, 45, 60};

简化格式:数据类型[] 数组名 = {元素1取值,元素2取值,....};
范例:int[] arr = {3,45,63};

(3)数组元素访问

格式:数组名[索引]
    
索引是数组中数据的编号方式用于访问数组中的数据:
	特征1:数索引从0开始
    特征2:索引是连续的
    特征3:索引逐一增加每次加1

(4)Java中内存分配

  • 程序在运行中,需要在内存中分配空间,为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。

  • 栈内存:存储局部变量

    • 定义在方法中的变量,例如: arr
    • 使用完毕,立即消失
  • 堆内存:存储new出来的内容(实体,对象)

  • 数组在初始化时,会为存储空间添加默认值:

    • 整数:默认值0
    • 浮点数:默认值0.0
    • 布尔:默认值false
    • 字符:默认值空字符
    • 引用数据类型:null

2、数组的遍历

(1)什么是数组遍历?

逐一获取数组中的每个元素。

(2)数组遍历

使用for循环,循环次数=数组名.length-1

(3)数组遍历通用格式

int[] arr = {......};
for(int i = 0; i < arr.length; i++){
    // 对数组元素进行操作
    arr[i];
}

3、数组中的数组

(1)什么是数组中的数组?

数组中的每个元素也是一个数组,如定义二维数组或多维数组。

(2)数组中的数组语法

格式:数据类型[][] 数组名= new 数据类型[外层数组长度][内层数组长度];
范例:int[][] score = new int[3][5];

(3)数组中的数组遍历

多层数组遍历可以使用多层for循环,把每一层元素看成一维数组进行遍历即可。

4、数组的排序

(1)什么是排序?

  • 是指将数组元素按照从小到大或从大到小的顺序重新排列;
  • 对于元素较多的数组,排序算法的优劣至关重要;
  • 一般情况下,通过排序过程中数组元素的交换次数来衡量排序算法的优劣;
  • 常用的排序算法有:插入排序,冒泡排序,快速排序等。

(2)数组冒泡排序算法

  • 冒泡排序的原则比较相邻的元素,如果违反最后的顺序准则,则交换;
  • 可以简化理解为
    • 第一次找到所有元素中最大的放在最后一个位置,不再变动;
    • 第二次找到剩余所有元素中最大的放在倒数第二个位置上,不再变动;
    • 以此类推,直到排序完成。

5、数组中最大、最小、过滤重复

  • 数组最大值:定义变量存放最大值,假设数组中第一个元素为变量初始值,该变量跟数组中其它值进行比较,如果遇到比该值大的重新赋值,比较完后该变量就是最大值。

  • 数组最小值:定义变量存放最小值,假设数组中第一个元素为变量初始值,该变量跟数组中其它值进行比较,如果遇到比该值小的重新赋值,比较完后该变量就是最小值。

  • 数组过滤重复:去掉数组中重复的数据,给每个元素一个标记,每个元素跟数组中其他元素进行比较,如果完全相同就改变原有标记,将没有改变标记的元素重新放入一个新的数组,并统计其个数,最终将新数组的数据复制到另一个新的数组中;使用System.arraycopy()方法可以实现数组的复制。

public static native void arraycopy(Object src,  int  srcPos, Object dest, int destPos, int length);

参数说明:
	- src:源数组
	- srcPos:源数组中的起始位置
	- dest:目标数组
	- destPos:目标数组中的起始位置
	- length:要复制的数组元素的数量

6、数组的系统类Arrays

Arrays类包含用于操作数组的各种方法:

方法名 说明
public static String toString(int[]a) 可返回指定数组的内容的字符串表示形式
public static void sort(int[]a) 可按照数字从小到大顺序排列指定的数组
public static long[] copyOf(long[] original, int newLength) 复制指定的数组(original:要复制的数组,newLength:新数组的长度)
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。