Java中数组的定义和使用详解
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:新数组的长度) |
- 点赞
- 收藏
- 关注作者
评论(0)