实验简介
所谓数组,就是相同数据类型的元素按一定顺序排列的集合,把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标。组成数组的各个变量称为数组的元素,也称为数组的分量,有时也称为下标变量。
数组是一种非常重要的数据类型,属于引用类型。数组是我们接触的第一个容器,数组是长度固定的容器。一旦定义好大小,将不能改变。由于Java中的数据类型分为两种:基本类型和引用类型。所以数组也有两种类型的:基本类型的数组和引用类型的数组(数组的数组也是引用类型的数组)。
数组是具有相同的数据类型且按一定次序排列的一组变量的集合体,构成一个数组的这些变量称为数组元素。数组按下标个数分类有一维数组,二维数组等,二维以上数组通常称为多维数组。
在JAVA中数组长度是不可改变的,一旦声明长度就被固定下来,不能变长,且具有相同数据类型。
实验目的
1.掌握数组的定义与基础使用。
2.掌握数组的基础运算,如数组复制,数组倒序,数组连接等。
3. 掌握数组的常见算法,如冒泡排序,选择排序,二分查找法等。
4. 理解JVM内存处理方式,完成数组的自动扩展实现。
实验流程
1. 数组的定义
数组对象是使用单独的变量名来存储一系列的值。如果你有一组数据(例如:学生姓名),存在单独变量如下所示:
String name1 = “张三”; String name2 = “李四”; String name3 = “王五”; String name4 = “赵六”; |
但是,如果我们有100名学生,1000名学生呢?我们如果定义100个或者1000个变量,整个操作也会变得非常麻烦,这个时候,我们就可以利用数组,只需要定义一个变量,便可以将这些姓名全部存起来,而且后续的操作还更加方便。创建一个数组,有三种方法。 下面的代码定义了一个名为names的数组对象:
(1) 常规方式:
String[] names = new String[4]; // 定义字符串数组 names[0] = "张三"; // 给该数组的每一个元素赋值 names[1] = "李四"; names[2] = "王五"; names[3] = "赵六"; |
(2) 简洁方式:
String[] names = {"张三","李四","王五","赵六"}; // 定义和赋值同时进行 int[] array1 = { 11, 22, 33, 44, 55, 66 }; |
一旦我们定义了数组,我们便可以通过以下几个常用方法或属性来对数组进行基本操作,如:
System.out.println(names[0]); // 取得数组的第一个元素,下标从0开始 |
数组作为记录一组数据的媒介,在程序设计中具有非常重要的作用,也是我们日常程序开发中必然会使用到的一种类型。所以,我们很有必要对数组进行深入的理解和灵活的运用。我们先来利用练习的方式完成一些相对比较简单的操作:
(3) 遍历输出整个数组的值:
String[] names = {"张三","李四","王五","赵六"}; // 使用标准for循环遍历数组 for (int i=0; i<names.length; i++) { System.out.println(names[i]); } // 使用for...each方式遍历数组 for (String i: names) { System.out.println(i); } |
2. 获取数组最大值(针对数值型数组有效)。
int[] array = { 111, 222, 3335, 444, 555, 666 }; int max = array[0]; for (int i=0; i<array.length; i++) { if (max < array[i]) { max = array[i]; } } System.out.println("数组的最大值为:" + max); |
3. 将数组倒序存放。
不借助于其它数组,将数组倒序存放,即让数组第1个元素与最后一个元素交换位置,让第2个元素与倒数第2个元素交换位置,以此循环,直到数组的一半为止,交换便可结束:
int[] array = { 11, 22, 33, 44, 55, 66 }; int len = array.length; for (int i=0; i<len/2; i++) { int temp = array[i]; array[i] = array[len-i-1]; array[len-i-1] = temp; }
// 倒序存放后输出数组的值进行确认 for (int i: array) { System.out.println(i); } |
4. 将两个数组连接在一起变成一个数组。
基本思路:定义第三个数组,长度为两个数组的长度之和,先将第一个数组的元素赋值给第三个数组的前面部分,再紧接着将第二个数组的元素继续赋值给第三个数组。代码如下:
int[] a = { 11, 22, 33, 44 }; int[] b = { 55, 66, 77, 88, 99 }; int[] result = new int[a.length + b.length]; for (int i=0; i<a.length; i++) { result[i] = a[i]; } for (int j=0; j<b.length; j++) { result[a.length+j] = b[j]; }
//输出合并后的数组并进行验证 for (int k: result) { System.out.println(k); } |
注:因为本节内容较长,所以特拆解为了两部分,以上是基础知识,下周将分享第二部分 关于“算法”与“数组”的知识,以及思考练习。
小伙伴们敬请期待哟~