06:数组
2021/7/30 6:06:15
本文主要是介绍06:数组,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
数组
数组是具有相同数据类型的一组数据的集合,根据维数不同可以分为一维数组、二维数组和多维数组。Java 语言中提供的数组是用来存储固定大小的同类型元素。
一、一维数组
1、数组的创建
在使用数组之前,必须首先定义数组变量所属的类型,即声明数组。
- 声明数组有两种形式。语法格式如下:
数组元素类型 数组名[]; 或 数据元素类型[] 数组名;
需要注意的声明时是[]中不能添加任何数据。两种声明方式都正确,不同数据要声明不同类型的数组;具体如下:
int arr[]; // 声明int型数组,数组中每个元素都是int型数值 或 String[] str; // 声明String数组,数组中每个元素都是String数组
- 声明数组后还不能访问它的任何元素,要想真正使用数组还要为其分配内存空间,且分配内存空间时必须指明数组的长度。
- 数组作为对象允许使用new关键字进行内存分配。语法格式如下:
数组名 = new 数组元素类型[数组元素个数];
实例如下:
arr = new int[5]; //为数组分配一个大小为5的内存空间
- 可以同时声明数组并分配内存,语法格式如下:
数组元素类型 数组名 = new 数组元素类型[数组元素个数];
例如:创建了一个一维数组arr,并指定了数组长度为9。
int arr = new int[9];
2、数组的初始化
数组也可以与基本数据类型一样进行初始化操作,可以分别初始化数组中的每个元素。
数组初始化的方式有两种,具体如下:
int arr1[] = new int[]{1,2,3,4,5}; // 第一种 或 int arr2[] = {10,11,12,13,14}; // 第二种
数组初始化的方式是:把数据包括在大括号之内,中间用逗号分开数组中的元素的值,系统自动为数组分配一定的空间。
练习1:求一组一维数组的和
public class Demo01 { public static void main(String[] args) { int arr[] = {1, 2, 3, 4, 5}; // 创建并初始化数组 int sum = 0; // 存储累加和 for (int i = 0; i < arr.length; i++) { //arr.length表示数组的长度 sum += arr[i]; } System.out.println("sum的和为" + sum); } }
运行结果:
sum的和为15
练习2:遍历数组
public class Demo02 { public static void main(String[] args) { int arr[] = {1, 2, 3, 4, 5}; // 创建并初始化数组 int sum = 0; // 存储累加和 //普通的for循环 for (int i = 0; i < arr.length; i++) { //arr.length表示数组的长度 System.out.print(arr[i] + " "); } System.out.println(); //增强型的for循环 for (int array : arr){ System.out.print(array + " "); } } }
运行结果:
1 2 3 4 5 1 2 3 4 5
二、多维数组
1、二维数组
如果一维数组中的各个元素仍是一维数组,那么它就是一个二维数组。二维数组常用于表示表,表中的信息以行和列的形式组织,第一个下标代表元素所在的行,第二个下标代码元素所在的列。或用线性代数的知识来说,二维数组就是一个矩阵,第一个下标代表矩阵的行,第二个下标代表矩阵的列。
二维数组的声明也有两种方式,语法格式如下:
数组元素类型 数组名[][]; 数组元素类型[][] 数组名;
与一维数组一样,如果声明时没有分配内存空间,同样也要使用关键字new来分配内存。
二维数组可以看作由多个一维数组组成,在给二维数组分配内存时,可以为这些一维数组同时分配相同的内存。第一个中括号中的数组是一维数组的个数,第二个中括号中是一维数组的长度。
int arr = new int[2][4]; //声明一个二维数组arr并为其分配内存空间,分配后arr拥有两个长度为4的一维数组
二维数组初始化
二维数组的初始化与一维数组类似,同样可以使用大括号完成二维数组的初始化。如下:
int arr[][] = {{3,0},{5,7},{6,9}};
练习:遍历二维数组
public class Demo03 { public static void main(String[] args) { int arr[][] = {{1,2},{3,4,5},{6,7,8,9}}; for(int i=0; i<arr.length; i++) { for(int j=0; j<arr[i].length; j++) { System.out.print(arr[i][j] + " "); // 输出 } System.out.println(); // 换行 } } }
运行结果:
1 2 3 4 5 6 7 8 9
2、三维数组
对于三维数组,想必各位已经能推算出来了,一维用一个括号,二维用两个括号,那么三维就用三个括号。
int arr[][][] = new int[][][]{ {{1,2,3},{4,5,6}}, {{7,8,9},{10,11,12}}, {{13,14,15},{16,17,18}} };
三、Array类
java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的。
具有以下功能:
- 给数组赋值:通过 fill 方法。
- 对数组排序:通过 sort 方法,按升序。
- 比较数组:通过 equals 方法比较数组中元素值是否相等。
- 查找数组元素:通过 binarySearch 方法能对排序好的数组进行二分查找法操作。
具体说明请查看下表:
序号 | 方法和说明 |
---|---|
1 | public static int binarySearch(Object[] a, Object key) 用二分查找算法在给定数组中搜索给定值的对象(Byte,Int,double等)。数组在调用前必须排序好的。如果查找值包含在数组中,则返回搜索键的索引;否则返回 (-(插入点) - 1)。 |
2 | public static boolean equals(long[] a, long[] a2) 如果两个指定的 long 型数组彼此相等,则返回 true。如果两个数组包含相同数量的元素,并且两个数组中的所有相应元素对都是相等的,则认为这两个数组是相等的。换句话说,如果两个数组以相同顺序包含相同的元素,则两个数组是相等的。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。 |
3 | public static void fill(int[] a, int val) 将指定的 int 值分配给指定 int 型数组指定范围中的每个元素。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。 |
4 | public static void sort(Object[] a) 对指定对象数组根据其元素的自然顺序进行升序排列。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。 |
四、冒泡排序
代码如下:
import java.util.Arrays; /** * 冒泡排序 */ public class Demo04 { public static void main(String[] args) { int[] array = {1,4,6,2,8,5,0}; //临时变量 int tmp; //外层循环:判断需要循环多少次 for (int i = 0; i < array.length-1; i++) { //内层循环:比较两个数 for (int j = 0; j < array.length-1-i; j++) { if (array[j+1] > array[j]){ tmp = array[j]; array[j] = array[j+1]; array[j+1] = tmp; } } } System.out.println(Arrays.toString(array)); } }
运行结果:
[8, 6, 5, 4, 2, 1, 0]
这篇关于06:数组的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-22项目:远程温湿度检测系统
- 2024-12-21《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》简介
- 2024-12-21后台管理系统开发教程:新手入门全指南
- 2024-12-21后台开发教程:新手入门及实战指南
- 2024-12-21后台综合解决方案教程:新手入门指南
- 2024-12-21接口模块封装教程:新手必备指南
- 2024-12-21请求动作封装教程:新手必看指南
- 2024-12-21RBAC的权限教程:从入门到实践
- 2024-12-21登录鉴权实战:新手入门教程
- 2024-12-21动态权限实战入门指南