从零开始学Java 第7章 数组

第7章  数组
数组是一种复合型的数据类型,它具有相同类型的数据集合。数组中的每一个数据称为数组的元素,数组元素是有序的。在本章中,主要介绍数组的知识,其中包括数组的定义、创建数组、数组的使用以及多维数组。
7.1  数组基础
数组是一种线性表,是一组数据的集合。用户可以比较方便的获取到这个线性表中的任何一个元素,并且可以对其中的元素值进行修改。数组中的元素会根据下标的顺序在内存中按照顺序来进行存放。本节中就主要介绍数组的基础知识。
7.1.1  数组概述
数组就是一组数的集合,集合中的数据必须是相同类型的。并且每一个数组都有一个名字,也就是数组名,用户可以通过数组名来访问数组中的元素。

7.1.2  创建数组
在Java中,一切的事物都是对象,数组也不例外,但是把数组看做是一个同种类型变量的集合会更加合适一些。在这样一个集合中,所有的数据都有相同的数据类型,而且使用统一的名称,可以通过下标来对其中的各个元素进行区分。数组在使用以前必须要进行声明,然后要对声明的数组进行初始化,最后才可以在数组中进行元素的存取。
7.1.3  初始化数组
前面已经对数组进行了声明创建,这样就可以对数组中的元素进行访问了。而且在数组中的所有的元素都会设置成为默认的值。如下示例就是打印出各个不同类型数组创建后的默认值。
7.2  数组的使用
在前面介绍了对数组的声明、创建和初始化。本节中,就主要介绍一下数组的使用,其中包括有对数组的复制、获取到数组的长度等。
7.2.1  获取数组长度
数组作为一个Java内部定义的对象,具有一个length属性,当该数组被初始化完成之后,就会将数组的长度复制给length属性。例如创建一个数组,它的长度为10。则length的值为10。
int [] array1=new int [10];
int i= array1.length;
7.2.2  数组拷贝
数组的复制可以直接将一个数组变量拷贝给另一个,这时候数组都会指向同一个数组,如果有两个数组array1和array2,可以执行下面语句。
array1=array2;
7.2.1  带参数运行
在Window系统的命令提示符窗口进行程序的编译和运行时,可以带入一些参数,以供程序在运行时使用。这一点不同于Scanner类的输入语句。实现带参数运行的效果,是因为在main方法中都带有一个字符串类型的数组,这个数组就是参数。例如以下程序,在命令提示符窗口中进行编译和运行。
7.3  多维数组
所谓的多维数组是指数组的嵌套,也就是一个数组中的元素也是数组。是数组的另一种表现形式。数组的维数是根据所嵌套的层数来决定。如果一个数组的每一个元素是一个数组,就成为二维数组。如果第二位数组的每一个元素也是一个数组,则成为三维数组。
7.3.1  多维数组基础
前面介绍的数组元素是由索引来进行访问的,那么在多维数组中,就需要使用多个索引来对数组元素进行访问。
7.3.2  实现多维数组
实际上在Java中只存在有一位数组,而多维数组的实现只不过是数组中的数组,例如一个二维数组,一个数组类型的变量指向一个一维数组,而这个一维数组中有有n个元素。这样就组成了一个二维数组。
7.3.3  创建不规则数组
前面介绍过,在Java中的多维数组实际上是数组中的数组。如果这些数组的大小不同,就是不规则数组,例如以下语法是声明一个不规则数组。
int [][]n=new int[4][];
通过以上的代码可以看出,在数组的声明时,值确定了数组的行数,而没有对数组的列做任何的规定。
7.4  数组排序
数组中存放的都是一些数据,有时候就需要对其中的数据按照一定的规则进行排列,例如学生成绩管理,就需要将学生的成绩或者是编号按照大小顺序进行排列。这时就需要使用到数组的排列算法。对数组的排列主要分为三种,分别是选择排列法、冒泡法、快速排序。本节就主要介绍一下这三种不同的数组排列方法。
7.4.1  选择排序
选择排序是最简单的额一种数组排序方法。使用选择排序法,首先要将数组中的一个最大数选出来,然后将最大的数和数组中的第一个元素进行交换,然后在次进行遍历,从剩余的元素中再选出一个最大的,和第二个数进行交换。依次类推,如果该数组中有n个元素,则在进行n此遍历后,数组就会以降序排列。
7.4.2  冒泡排序
冒泡排序法也是一种交换排序算法,可以将数组中的元素看做是水中的物体,密度比较大的就是数值比较大的元素,密度比较小的就是数值比较小的元素。对数组中元素的排序就是物体上浮的过程。首先让第一个元素和数组中的每一个元素进行比较,根据比较的结果进行位置的调换,这样较小的元素自然就会排到上面,大的元素就会降到下面。
7.4.3  快速排序
    快速排序法是对冒泡排序法的一种改进,大大提高了排序的效率。它首先通过一趟排序将要排序的数据分割成两个独立的部分,首先设置一个中间数据,然后将比该数据小的放置到左边,而比它大的数据则放置到右边。
7.5  小结
在本节中主要介绍了数组的内容。先后介绍了数组的创建和使用、数组拷贝、数组排序、以及多维数组的使用。结束完本章的学习,Java的基础知识已经基本完成,从下一章开始将会开始学习Java的面向对象性特性。面向对象性是Java的主要特性,也是区别于别的语言的地方,希望大家认真学习后边的内容。

原文地址:https://www.cnblogs.com/yoogoo/p/2467263.html